android - 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);
解决方案
所以我升级到 com.google.android.gms:play-services-ads:12.0.1 并且异常消失了。
推荐阅读
- r - 如何在 R 中的同一图上绘制两个百分比直方图?
- mysql - MySQL选择一行出现多次
- c# - SQLite.Interop.dll 未找到,即使它在它应该在的位置
- maximo - IBM Maximo - 服务请求应用程序上的空报告日期必填字段
- swift - 如何在 Flutter 中启用对现有项目的 Swift 支持
- r - 控制动画的速度
- python - 为什么我面对空图而没有任何错误?
- google-authentication - GOOGLE_APPLICATION_CREDENTIALS 在环境中定义但在身份验证时无法识别
- python - 将数据帧结果与 DatetimeIndex 索引相结合
- jquery - $ 未定义,但它仍然可以完美运行