2011-12-14 10 views
6

Voglio ottenere i dati dal programma di avvio db.collegamento Android, launcher di accesso 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); 

e

<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" /> 

ma si dice che in logcat:

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

controllo questo: http://www.google.com/support/forum/p/android/thread?tid = 74f6668ec87004b5 & hl = it –

risposta

8

Il lanciatore è una domanda ai sensi del Costruttore responsabilità microtelefono. L'Autorità non è quindi sempre "com.android.launcher2.settings". Il produttore del portatile potrebbe riscrivere autonomamente. Può essere "com.android.twlauncher" o qualsiasi altra cosa a seconda del pacchetto Java.

È necessario recuperare l'autorizzazione corretta cercando un provider che dichiari le autorizzazioni di lettura/scrittura "com.android.launcher.permission.READ_SETTINGS" o "com.android.launcher.permission.WRITE_SETTINGS".

Questo è un esempio di codice per farlo:

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; 
} 

In generale, la struttura ContentProvider e DB è tenuto, ed è possibile utilizzare le stesse query.

+0

@ JacksOnF1re Questo ha fatto o non ha fatto il trucco? – Corey

+0

@Corey questo non ha risolto il mio problema;) – JacksOnF1re

0

Per i miei Nexus 5 dispositivi differenti autorizzazioni necessarie

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

stringa Autorità è com.google.android.launcher.settings

Problemi correlati