Android-ярлык, доступ к лаунчеру БД - PullRequest
6 голосов
/ 14 декабря 2011

Я хочу получить данные из лаунчера БД.

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

и

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

но сказано, что в logcat:

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

Ответы [ 2 ]

8 голосов
/ 08 июня 2012

Launcher является приложением под ответственностью производителя трубки.Власть тогда не всегда "com.android.launcher2.settings".Производитель телефонов может переписать свой собственный.Это может быть "com.android.twlauncher" или что-то еще, в зависимости от пакета Java.

Вам необходимо получить правильные права доступа путем поиска поставщика, который объявляет разрешения на чтение / запись "com.android.launcher.permission.READ_SETTINGS" или "com.android.launcher.permission.WRITE_SETTINGS".

Это пример кода для этого:

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

Как правило, структура ContentProvider и DB сохраняются, и вы можете использовать те же запросы.

0 голосов
/ 18 июля 2016

Для моего устройства Nexus 5 требуются различные разрешения

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

Строка авторизации com.google.android.launcher.settings

...