2011-12-14 57 views
6

我想從啓動數據庫獲取數據。安卓快捷鍵,訪問啓動分貝

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 
+0

檢查:http://www.google.com/support/forum/p/android/thread?tid = 74f6668ec87004b5&hl = en – 2011-12-16 10:02:26

回答

8

的發射器是在手機制造商負責應用程序。 當局並不總是"com.android.launcher2.settings"。 手機制造商可能會重寫它自己的。 根據Java包,它可以是"com.android.twlauncher"或其他任何東西。

您需要通過搜索聲明讀取/寫入權限"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

@ JacksOnF1re這樣做還是沒有訣竅? – Corey 2015-08-07 20:33:55

0

對於我的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