Не меняя никакого кода между Android Oreo и Android P, когда я пытаюсь получить идентификатор рекламы следующим образом:
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){}
});
Я получаю следующее SecurityException на Android P, у меня нет SharedPrefs, объявленных в моем манифесте или иным образом:
05-22 15:01:14.590 18536-22301/com.someapp.mobilesdktest W/AdvertisingIdClient: Error while reading from SharedPreferences java.lang.SecurityException: MODE_WORLD_READABLE no longer supported at android.app.ContextImpl.checkMode(ContextImpl.java:2453) at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:389) at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:376) at 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)
Когда я пытаюсь распечатать какие-либо SharedPrefs через Prefs.getAll () SharedPreferences, он пуст ... Как мне изменить это на MODE_PRIVATE, поскольку это метод getAdvertisingIdInfo () в пакете play-services-basement, и он пытается вызвать getSharedPreferences ("google_ads_flags", 1);
возможный дубликат stackoverflow.com/questions/39121052
Поэтому я обновился до com.google.android.gms: play-services-ads: 12.0.1, и исключение исчезло.
Я запускаю компиляцию com.google.android.gms: play-services-ads: 9.8.0