Скрыть фиктивную учетную запись для адаптера синхронизации из настроек
Я создал адаптер синхронизации с фиктивной учетной записью, и я не хочу, чтобы он отображался в списке Учетная запись в приложении "Настройки", а также когда пользователь нажимает кнопку "Добавить учетную запись" в "Настройки". Я пробовал android: userVisible = "false" в моем определении адаптера синхронизации, но все же появляется учетная запись. Я пробовал это на эмуляторе и на трех физических устройствах. Все работает правильно с точки зрения того, что он синхронизирует все данные, которые мне нужны, единственное, что неправильно, это то, что я вижу учетную запись в списке, и я не хочу.
Мой файл authenticator.xml:
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="net.astagor.android.hhp.account"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/app_name"
/>
Мой файл syncadapter.xml:
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="net.astagor.android.hhp"
android:accountType="net.astagor.android.hhp.account"
android:userVisible="false"
android:supportsUploading="true"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
/>
И я добавляю свой adpater следующим образом:
Account account = AuthenticatorService.GetAccount();
AccountManager accountManager = (AccountManager) context
.getSystemService(Context.ACCOUNT_SERVICE);
if (accountManager.addAccountExplicitly(account, null, null)) {
ContentResolver.setIsSyncable(account, StubProvider.AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account,
StubProvider.AUTHORITY, true);
ContentResolver.addPeriodicSync(account, StubProvider.AUTHORITY,
new Bundle(), SYNC_FREQUENCY);
}
И я получаю учетную запись в списке учетных записей и в списке дополнительных учетных записей.
Помогите пожалуйста!:)
Ответы
Ответ 1
Я нашел решение.
Вот как должен выглядеть файл authenticator.xml:
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="net.astagor.android.hhp.account"
/>
Вы не должны иметь следующие строки:
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/app_name"
Если вы их разместите, учетная запись будет видна везде, где вы устанавливаете андроид: userVisible = "false" или нет.
Ответ 2
Это не реальный ответ, но если вы удалите ярлык из файла authenticator.xml, он не будет отображаться в списке добавленных учетных записей, но значок не будет содержать ярлыка в списке после нажатия кнопки добавления учетной записи. Уродливая и, вероятно, не очень хорошая идея. (этот метод скрывает учетную запись, по крайней мере, на моем ядре 4, работающем 4.4 - еще не проверял другие устройства).
Я полагаю, что флаг видимого пользователя в адаптере синхронизации влияет только на отображение части синхронизации после выбора учетной записи, где вы можете увидеть последнее время синхронизации, установить параметры автоматической синхронизации и синхронизацию запуска.
Я хотел бы это узнать. Это должно быть возможно, так как я не вижу, что список моих учетных записей заполнен фиктивными учетными записями. Так что либо есть способ, либо почти ни один из моих установленных приложений не беспокоит адаптеры синхронизации?