android快捷方式,访问启动器db

前端之家收集整理的这篇文章主要介绍了android快捷方式,访问启动器db前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从启动器db获取数据.
  1. final String AUTHORITY = "com.android.launcher2.settings";
  2. final Uri CONTENT_URI = Uri.parse("content://" +
  3. AUTHORITY + "/favorites?notify=true");
  4.  
  5. Cursor c = contentResolver.query(uri,columns,null,null);

  1. <uses-permission
  2. android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  3. <uses-permission
  4. android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
  5. <uses-permission
  6. android:name="com.android.launcher.permission.READ_SETTINGS" />
  7. <uses-permission
  8. android:name="com.android.launcher.permission.WRITE_SETTINGS" />

但据说在logcat中:

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

解决方法

启动器是手机制造商责任下的应用程序.
然后,管理局并不总是“com.android.launcher2.settings”.
手机制造商可能会重写自己的手机.
它可以是“com.android.twlauncher”或其他任何东西,具体取决于Java包.

您需要通过搜索声明读/写权限“com.android.launcher.permission.READ_SETTINGS”或“com.android.launcher.permission.WRITE_SETTINGS”的提供程序来检索正确的权限.

这是一个示例代码

  1. static String getAuthorityFromPermission(Context context,String permission){
  2. if (permission == null) return null;
  3. List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);
  4. if (packs != null) {
  5. for (PackageInfo pack : packs) {
  6. ProviderInfo[] providers = pack.providers;
  7. if (providers != null) {
  8. for (ProviderInfo provider : providers) {
  9. if (permission.equals(provider.readPermission)) return provider.authority;
  10. if (permission.equals(provider.writePermission)) return provider.authority;
  11. }
  12. }
  13. }
  14. }
  15. return null;
  16. }

通常,保留ContentProvider和DB结构,您可以使用相同的查询.

猜你在找的Android相关文章