我将我的应用程序从API 28升级到29。测试了其调试和发布版本。一切都很好。然而,在play商店发布后,这些应用程序的行为却很奇怪。
问题:共享首选项的默认值似乎不正确。
我在安卓10的谷歌开发者信息中找不到任何注释。
代码:
内部活动
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'
初始值始终为true,但应为false。
我设法找到了以下信息:
- xml声明应该是:
<androidx.preference.PreferenceScreen…和<androidx.preference.SwitchPreference…
- 似乎不再支持getDefaultSharedPreferences(上下文上下文((AndroidX也不支持(
我面临的问题是:如何在没有默认首选项管理器的情况下使用首选项屏幕?没有其他方法可以读取afaik数据。
解决方案:
在清单中禁用自动更新。这解决了问题。