Не удается получить доступ к настройкам, установленным в account-authenticator в Android

#android #preferences #account

#Android #настройки #Учетная запись

Вопрос:

Я устанавливаю настройки в флажке через account-authenticator:

 Intent settingsIntent = new Intent("android.settings.ACCOUNT_SYNC_SETTINGS");
settingsIntent.putExtra("account", mActiveAccount);
startActivityForResult(settingsIntent, ACCOUNT_COMPLETE);
  

с помощью xml из:

 <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="com.example.auth"
android:label="@string/auth_label"
android:accountPreferences="@xml/auth_preferences" />
  

и в auth_preferences.xml У меня есть:

 <?xml version="1.0" encoding="UTF-8" ?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/auth_preferences_general_group" />
<PreferenceScreen android:key="account_settings"
    android:title="@string/auth_preferences_general_details_title" 
    android:summary="@string/auth_preferences_general_details_description">
    <intent android:action="com.example.ACCOUNT_SETUP"
        android:targetPackage="com.example.core"
        android:targetClass="com.example.authentication.AuthenticatorAccountOptions" />
</PreferenceScreen>
<PreferenceCategory android:title="@string/auth_preferences_data_sync_group" >
    <CheckBoxPreference
          android:key="checkbox_pref"
          android:title="@string/auth_preferences_data_sync_syncwidget_title" 
          android:summary="@string/auth_preferences_data_sync_syncwidget_description"
          android:defaultValue="true"
          android:persistent="true" />  
</PreferenceCategory>   
  

Но я не могу получить доступ к настройкам этого флажка в основном коде, когда пытаюсь его восстановить :

 SharedPreferences prefs = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
boolean isChecked = prefs.getBoolean("checkbox_pref", true);
  

Кто-нибудь знает, откуда можно получить доступ к настройкам на основе account-authenticator?

Ответ №1:

Изменения, внесенные в действие на основе auth_preferences.xml , сохраняются в com.android.settings_preferences.xml , и к ним нельзя получить доступ с помощью вашего приложения getSharedPreferences(file, context) . Общее решение, которое я нашел, — вместо этого запустить новое PreferenceActivity в настройках учетной записи.

Комментарии:

1. Как бы вы это сделали? И почему существует возможность создавать настройки, если вы не можете их прочитать?

2. Это не только общее решение, но и то, что предназначено для AbstractAccountAuthenticator : «Атрибут preferences указывает на иерархию xml PreferenceScreen, которая содержит список PreferenceScreens, которые могут быть вызваны для управления средством аутентификации».