Чтобы понять, что такое полномочия, вам нужно ознакомиться с документацией ContentProvider :
В нем говорится: «он идентифицирует поставщика контента. Для сторонних приложений это должно быть полное имя класса (сокращено до строчных букв) для обеспечения уникальности. Полномочия объявляются в атрибуте полномочия элемента»
Тип учетной записи - это идентификатор вашего Аутентификатора, который будет использоваться, например, клиентами AccountManager для вызова getAccountsByType(String)
.
Для SampleSyncAdapter :
android:contentAuthority="com.android.contacts"
android:accountType="com.example.android.samplesync"
android: accountType совпадает с определенным аутентификатором.
Таким образом, Content-Authority указывает, какой поставщик контента будет синхронизироваться локально, а accountType указывает, какой аутентификатор будет использоваться для удаленного доступа к данным.
AccountType также используется для получения определенного содержимого URI адаптера синхронизации.
Например, если вы хотите запустить синхронизацию, вам нужно вызвать requestSync следующим образом:
final Account account = new Account(accountName, ACCOUNT_TYPE);
ContentResolver.requestSync(account, CONTENT_AUTHORITY, new Bundle());
В то же время для создания content-uri для вашего адаптера синхронизации вы можете использовать что-то вроде:
Uri CONTENT_URI = ContactsContract.RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName).appendQueryParameter(RawContacts.ACCOUNT_TYPE, SyncAdapter.ACCOUNT_TYPE).build();
Посмотрите на Android-Sync-адаптер
Между тем ранее упомянутая документация ContentProvider была пересмотрена. последняя версия гласит:
Проектирование органа
Поставщик обычно имеет единственную власть, которая служит его
Android-внутреннее имя. Чтобы избежать конфликтов с другими поставщиками, вы
следует использовать владение интернет-доменом (в обратном порядке) в качестве основы вашего
полномочия провайдера. Потому что эта рекомендация верна и для
Имена пакетов Android, вы можете определить полномочия вашего провайдера как
расширение имени пакета, содержащего провайдера. За
Например, если имя вашего пакета Android com.example.<appname>
, вы
должен дать вашему провайдеру полномочия
com.example.<appname>.provider
.