Что делать, если я не хочу синхронизировать контакты? - PullRequest
1 голос
/ 08 августа 2011

В приложении для Android, над которым я работаю, я использую AccountManager для хранения информации учетной записи пользователя, а также для синхронизации нескольких источников (у меня есть две службы, которые отвечают на намеренное действие android.content.SyncAdapter).

Однако я не синхронизирую контакты.Несмотря на это, если я захожу в приложение контактов и выбираю добавить контакт, я получаю всплывающее окно с вопросом, под какой учетной записью следует создать контакт.Там же указана учетная запись, созданная моим приложением.Я попытался поставить android:supportsUploading="false" на мои <sync-adapter> с, не работает.

Единственное решение, которое я сейчас вижу, - это создать пустой, невидимый сервис синхронизации контактов, который имеет android:supportsUploading="false", но это кажетсякак самый большой и самый бесполезный взлом когда-либо.

Помощь?

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Мне кажется, что вы должны указать оба значения: android:supportsUploading="false" И ваши права доступа должны быть android:contentAuthority="com.android.contacts" (ContactsContract.AUTHORITY).

См. com.android.contacts.model.Sources.queryAccounts(), который заполняет флаг .readOnly, и com.android.contacts.model.Sources.getAccounts(), который используется com.android.contacts.util.AccountSelectionUtil.getSelectAccountDialog() для заполнения диалога контактов.

Что мне не ясно, так это то, имеет ли это дополнительные (потенциально нежелательные) побочные эффекты, особенно если учесть, что вы указываете contentAuthority, который концептуально противоположен тому, что вы хотите.

-Tim

0 голосов
/ 01 апреля 2016

, если вы не хотите синхронизировать контакты, измените полномочия xml-файла вашего syncadapter на полномочия поставщика контактов вашего приложения. Если у вас нет поставщика контактов для вашего приложения. Просто создайте фиктивного провайдера и предоставьте его полномочия XML-файлу вашего адаптера синхронизации. Предоставление прав доступа com.android.contacts в xml-файле вашего syncadapter приведет к такому поведению, как вы упомянули:

"Однако я не синхронизирую контакты. Несмотря на это, если я захожу в приложение контактов и выбираю добавить контакт, я получаю всплывающее окно, спрашивающее меня, под какой учетной записью следует создать контакт. мое приложение также указано там. Я попытался поставить android:supportsUploading="false" на s, не работает. "

это решит эту проблему

...