Google 广告 ID 返回 null

Google advertising id returning null

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

但是还是不行。这是我的 class 代码

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;
        }

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

//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();