【问题标题】:Google advertising id returning nullGoogle 广告 ID 返回 null
【发布时间】:2015-06-26 03:57:07
【问题描述】:

所以我创建了一个类来检索用户设备的 Google 广告 ID。我仍然得到一个空指针。我关注了这个question

但是还是不行。这是我的课程代码

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import com.google.android.gms.ads.identifier.AdvertisingIdClient.Info;
import com.google.android.gms.ads.identifier.AdvertisingIdClient;
public class GAID extends AppCompatActivity {

public String mUserId;

public GAID() {
    new Thread(new Runnable() {
        public void run() {
            try {Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
                mUserId = adInfo.getId();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }).start();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gaid);

}

public String getGAID() {
            return mUserId;
        }

【问题讨论】:

  • 播放服务已启用?
  • 已添加到 gradle 中。如果有其他方法我应该启用它?
  • 我的意思是在你试图获取广告 ID 的设备中
  • 这就是我的意思。在我可以拨打电话之前,是否有另一种方法可以初始化播放服务

标签: android google-advertising-id


【解决方案1】:

我正在处理同样的问题。我找到了解决方案,但并不完美。

//retrieving GIDA
    AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {
            AdvertisingIdClient.Info idInfo = null;
            try {
                idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
            } catch (GooglePlayServicesNotAvailableException e) {
                e.printStackTrace();
            } catch (GooglePlayServicesRepairableException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            String advertId = null;
            try{
                advertId = idInfo.getId();
            }catch (NullPointerException e){
                e.printStackTrace();
            }

            return advertId;
        }

        @Override
        protected void onPostExecute(String advertId) {
            mUserId = advertId;
            collectedGIDA =true;
            Toast.makeText(getApplicationContext(), mUserId , Toast.LENGTH_SHORT).show();
        }

    };
    task.execute();

【讨论】:

  • 嗯,这是一个怎样的解决方案?有时仍然返回 null,但它不会崩溃 :)
  • 防止崩溃永远不是解决方案。
猜你喜欢
  • 2017-09-12
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多