Без изменения какого-либо кода между Android Oreo и Android P, когда я пытаюсь получить AdvertisingID следующим образом:
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: Ошибка при чтении из SharedPreferences java.lang.SecurityException: MODE_WORLD_READABLEбольше не поддерживается в android.app.ContextImpl.checkMode (ContextImpl.java:2453) в android.app.ContextImpl.getSharedPreferences (ContextImpl.java:389) в android.app.ContextImpl.getSharedPreferences (ContextImpl.java:6).google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo (неизвестный источник: 12) в com.someapp.SomeFile $ 58.run (SomeFile.java:3607) в java.lang.Thread.run (Thread.java:764).)
Когда я пытаюсь распечатать какие-либо SharedPrefs через SharedPreferences prefs.getAll (), это пусто ... Как изменитьего в MODE_PRIVATE, поскольку этот метод getAdvertisingIdInfo () является методом в пакете play-services-basement, и он пытается вызвать getSharedPreferences ("google_ads_flags", 1);