首页 > 解决方案 > Android P 上的 AndroidAdvertisingId 异常

问题描述

在不更改 Android Oreo 和 Android P 之间的任何代码的情况下,当我尝试以下列方式获取广告 ID 时:

 Thread backgroundWorker = new Thread(new Runnable(
 {
    @Override
    public void run()
    {
         try
         { 

            AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(appContext);

           if (adInfo != null){
               Log.d(“some tag”,adInfo.getId());
           }

        } 
        catch (IllegalStateException e){} 
        catch (GooglePlayServicesRepairableException e){}
        catch (IOException e){}
        catch (GooglePlayServicesNotAvailableException e){}
        catch (SecurityException e){}
});

我在 Android P 上收到以下 SecurityException,我的清单中没有声明任何 SharedPrefs 或其他:

05-22 15:01:14.590 18536-22301/com.someapp.mobilesdktest W/AdvertisingIdClient:从 SharedPreferences java.lang.SecurityException 读取时出错:android.app.ContextImpl.checkMode(ContextImpl.java:2453) 不再支持 MODE_WORLD_READABLE ) 在 android.app.ContextImpl.getSharedPreferences(ContextImpl.java:389) 在 android.app.ContextImpl.getSharedPreferences(ContextImpl.java:376) 在 com.google.android。gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(Unknown Source:12) at com.someapp.SomeFile$58.run(SomeFile.java:3607) at java.lang.Thread.run(Thread.java:764)

当我尝试通过 SharedPreferences prefs.getAll() 打印任何 SharedPrefs 时,它是空的...如何将其更改为 MODE_PRIVATE 因为 getAdvertisingIdInfo() 是 play-services-basement 包中的一种方法,它会尝试调用 getSharedPreferences (“google_ads_flags”,1);

标签: androidgoogle-play-servicessharedpreferences

解决方案


所以我升级到 com.google.android.gms:play-services-ads:12.0.1 并且异常消失了。


推荐阅读