2011-12-14 12 views
6

Chcę uzyskać dane z programu uruchamiającego db.skrótu na Androida, wyrzutnia dostępu db

final String AUTHORITY = "com.android.launcher2.settings"; 
final Uri CONTENT_URI = Uri.parse("content://" + 
         AUTHORITY + "/favorites?notify=true"); 

Cursor c = contentResolver.query(uri, columns, null, null, 
      null); 

i

<uses-permission 
     android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> 
<uses-permission 
     android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/> 
<uses-permission 
     android:name="com.android.launcher.permission.READ_SETTINGS" /> 
<uses-permission 
     android:name="com.android.launcher.permission.WRITE_SETTINGS" /> 

ale mówi się, że w LogCat:

Failed to find provider info for com.android.launcher2.settings 
+0

sprawdzić to: http://www.google.com/support/forum/p/android/thread?tid = 74f6668ec87004b5 & hl = en –

Odpowiedz

8

Wyrzutnia to aplikacja pod słuchawka Producent odpowiedzialności. Urząd nie zawsze jest wtedy "com.android.launcher2.settings". Producent słuchawki może przepisać własną. Może to być "com.android.twlauncher" lub cokolwiek innego w zależności od pakietu Java.

Należy pobrać odpowiednie uprawnienia, wyszukując dostawcę, który deklaruje uprawnienia do odczytu/zapisu: "com.android.launcher.permission.READ_SETTINGS" lub "com.android.launcher.permission.WRITE_SETTINGS".

To jest przykładowy kod to zrobić:

static String getAuthorityFromPermission(Context context, String permission){ 
    if (permission == null) return null; 
    List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS); 
    if (packs != null) { 
     for (PackageInfo pack : packs) { 
      ProviderInfo[] providers = pack.providers; 
      if (providers != null) { 
       for (ProviderInfo provider : providers) { 
        if (permission.equals(provider.readPermission)) return provider.authority; 
        if (permission.equals(provider.writePermission)) return provider.authority; 
       } 
      } 
     } 
    } 
    return null; 
} 

Generalnie struktura ContentProvider i DB są przechowywane i można stosować te same pytania.

+0

@ JacksOnF1re Czy to się udało, czy nie? – Corey

+0

@Corey to nie rozwiązało mojego problemu;) – JacksOnF1re

0

Dla moich Nexus 5 urządzeń różnych uprawnieniach wymagane

<uses-permission android:name="com.google.android.launcher.permission.READ_SETTINGS"/> 
<uses-permission android:name="com.google.android.launcher.permission.WRITE_SETTINGS"/> 

Urząd ciąg jest com.google.android.launcher.settings

Powiązane problemy