Рекламный идентификатор Google, возвращающий ноль на нугу

Я использую рекламный идентификатор в своем приложении, и код работал нормально, когда я тестировал его на устройстве под управлением Android Nougat 7.1.2. Можете ли вы указать, что я должен добавить, чтобы получить его в нуге тоже?

private static void getAdvertisingID() {
    AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {
            AdvertisingIdClient.Info idInfo = null;
            try {
                idInfo = AdvertisingIdClient.getAdvertisingIdInfo(_context);
                if (idInfo.isLimitAdTrackingEnabled()){ // check if user has opted out of tracking
                    Log.i("NetworkStateChangeReceiver","Not Found");
                    return "did not found GAID... sorry";
                }
            } catch (GooglePlayServicesNotAvailableException e) {
                e.printStackTrace();
            } catch (GooglePlayServicesRepairableException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
            String advertId = null;
            try{
                advertId = idInfo.getId();
            }catch (Exception e){
                e.printStackTrace();
            }
            return advertId;
        }
        @Override
        protected void onPostExecute(String advertId) {
            Log.i("NetworkStateChangeReceiver","Found "+advertId);
            UtilHelper.setDeviceIDFA(advertId);
        }
    };
    task.execute();
}

1 ответ

Решение

Оказывается, код работает нормально, единственная проблема в том, что на Nougat требуется несколько звонков onPostExecute метод, в то время как на других устройствах с более низкой версией Android этот метод вызывается быстро. Я просто добавил задержку, чтобы получить рекламный идентификатор после звонка getAdvertisingID и все работало нормально. Удачного кодирования

Другие вопросы по тегам