Android - API 29 之后的奇怪行为共享偏好

Android - Strange behavior shared preferences after API 29

我将我的应用程序从 API 28 升级到 29。测试了它的调试和发布版本。一切正常。但是,在 Play 商店中发布后,应用程序的行为很奇怪。

问题:共享首选项的默认值似乎不正确。

我在 Google 开发者信息中找不到 android 10 的任何注释。

代码:

里面Activity

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String birthdaysKey = "app.birthdays";
birthdays = prefs.getBoolean(birthdaysKey, false);

里面XML

<SwitchPreferenceCompat
android:defaultValue="false"
app:icon="@drawable/ic_birthday_24dp"
app:key="app.birthdays"
app:summary="@string/birthday_description"
app:title="@string/birthday"
app:useSimpleSummaryProvider="false" />

buildgradle

implementation 'androidx.preference:preference:1.1.1'

初始值始终为真,但应为假。

我设法找到了以下信息:

  1. xml声明应该是:

  1. getDefaultSharedPreferences(Context context) 似乎不再受支持(AndroidX 也不支持)

我面临的问题是:如何在没有默认首选项管理器的情况下使用首选项屏幕?没有其他方法可以读取数据 afaik。

解决方案:

禁用清单中的自动更新。这解决了这个问题。