我想从启动器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);
和
<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
解决方法
启动器是手机制造商责任下的应用程序.
然后,管理局并不总是“com.android.launcher2.settings”.
手机制造商可能会重写自己的手机.
它可以是“com.android.twlauncher”或其他任何东西,具体取决于Java包.
然后,管理局并不总是“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结构,您可以使用相同的查询.