2011-12-14 9 views
6

Quiero obtener datos del iniciador db.atajo de Android, iniciador de acceso 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); 

y

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

pero se dice que en Logcat:

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

cheque esto: http://www.google.com/support/forum/p/android/thread?tid = 74f6668ec87004b5 & hl = es –

Respuesta

8

El lanzador es una aplicación bajo la responsabilidad del fabricante del teléfono. La Autoridad no siempre es "com.android.launcher2.settings". El fabricante del teléfono puede reescribir el suyo. Puede ser "com.android.twlauncher" o cualquier otra cosa, según el paquete de Java.

Debe recuperar la autorización correcta buscando un proveedor que declare los permisos de lectura/escritura "com.android.launcher.permission.READ_SETTINGS" o "com.android.launcher.permission.WRITE_SETTINGS".

Este es un ejemplo de código para hacer eso:

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

En general, la estructura ContentProvider y DB se mantiene, y se puede usar las mismas consultas.

+0

@ JacksOnF1re ¿Esto funcionó o no? – Corey

+0

@Corey esto no resolvió mi problema;) – JacksOnF1re

0

Para mis Nexus 5 dispositivos diferentes permisos necesarios

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

cadena de autoridad es com.google.android.launcher.settings

Cuestiones relacionadas