Как проверить настройки синхронизации в Android - PullRequest
3 голосов
/ 15 ноября 2011

Я создаю приложение для Android, для которого мне нужно проверить настройки синхронизации для каждой отдельной учетной записи, зарегистрированной на устройстве. Я знаю, что могу сделать это через класс ContentResolver, но у меня возникли некоторые проблемы с этим. Мне удалось получить список всех учетных записей на устройстве, но я не знаю, где получить соответствующие полномочия конкретной учетной записи во время выполнения. Ниже приведен код:

AccountManager acm = AccountManager.get(getApplicationContext());
    Account[] acct = acm.getAccounts();
    for(int i=0;i<acct.length;i++){
        int p = ContentResolver.getIsSyncable(acct[i], null);
        Log.i(TAG,"account name is"+acct[i].name);
        Log.i(TAG,"answer to syncable is: "+String.valueOf(p));

getIsSyncable (Account am, String полномочия) запрашивает учетную запись и полномочия. Как видите, я передаю NULL вместо фактического авторитета. Кто-нибудь знает, как я могу найти права доступа к соответствующей учетной записи?

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Вы можете извлечь известные SyncAdapters и затем запросить ContentResolver

AccountManager acm
        = AccountManager.get(getApplicationContext());
    Account[] acct = null;

    SyncAdapterType[] types = ContentResolver.getSyncAdapterTypes();
    for (SyncAdapterType type : types) {
      Log.d(TAG, "--------------------");
      Log.d(TAG, type.authority + "--" + type.accountType);
      acct = acm.getAccountsByType(type.accountType);
      for (int i = 0; i < acct.length; i++) {
        int p = ContentResolver.getIsSyncable(acct[i], type.authority);
        Log.i(TAG, "account name: " + acct[i].name);
        Log.i(TAG, "syncable: " + String.valueOf(p));
      }
    }

Вывод:

11-15 17: 12: 51.899: DEBUG / syncsample (4572): com.google.android.music.MusicContent - com.google 11-15 17: 12: 51.899:

INFO / syncsample (4572): имя учетной записи: xxxxxxxxx@gmail.com 11-15 17:12:51.899: INFO / syncsample (4572): синхронизируемый: 1 11-15 17: 12: 51.899:

INFO / syncsample (4572): имя аккаунта: xxxxxx@google.com 11-15 17: 12: 51.899: INFO / syncsample (4572): syncable: 0

0 голосов
/ 15 ноября 2011

Поскольку в конкретной учетной записи так много настроек, вам необходимо предоставить полномочия для каждой отдельной учетной записи.

Как и для контактов, вы можете указать как ContactsContract.AUTHORITY, что является ничем иным, как com.android.contacts, поэтому для другого компонента вы можете найти его в имени пакета и указать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...