2015-02-11 2 views
0

Я пытаюсь определить список sync adapters установленных приложений, но я не могу найти ничего, связывая полномочия синхронизации и обработку пакета/приложения Это?Как получить все адаптеры синхронизации (тип/полномочия) для определенного пакета

Использование AccountManager.getAccountsByType предоставляет только учетную запись, информацию об отсутствии или информацию о пакете.

Использование ContentResolver.getSyncAdapterTypes() предоставляет все возможности синхронизации, однако я не могу определить, какой package/app обрабатывает, что.

Есть ли способ определить, что sync adapters конкретное app/package handles или как в заголовке, какой пакет обрабатывает данный адаптер синхронизации?

Спасибо за любую помощь по этому вопросу.

ответ

1

На самом деле это было довольно просто, я просто принимал все неправильно, пытаясь найти пакет из адаптера синхронизации, тогда как в пакете есть все компоненты, определенные в PackageInfo!

Ниже код будет найти все поставщик пакетов является синхронизация адаптером для данного пакета (pkg_name):

  SyncAdapterType[] types = ContentResolver.getSyncAdapterTypes(); 
      int J = types.length; 

      PackageInfo pi = pm.getPackageInfo(pkg_name, PackageManager.GET_PROVIDERS); 
      if (pi.providers != null) 
      { 
       int I = pi.providers.length; 
       for(int i = 0; i < I; i++) 
       { 
        ProviderInfo p = pi.providers[i]; 
        for(int j = 0; j < J; j++) 
        { 
         SyncAdapterType sat = types[j]; 

         if (p.authority.equals(sat.authority)) 
         { 
          // This provider is a sync adapter 

Над кода требуется специальное разрешение:

<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> 
Смежные вопросы