Android权限拒绝如果其他应用程序未先安装

前端之家收集整理的这篇文章主要介绍了Android权限拒绝如果其他应用程序未先安装前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从光标中读取内容,如下所示:
  1. cursor = context.getContentResolver().query(TASKS_URI,null,new String[]{"-1","true"},null);

TASKS_URI在哪里:

  1. private final static Uri TASKS_URI = Uri.parse("content://org.dayup.gtask.data/tasks");

所以我想要做的就是从另一个应用程序获取光标.

在我的manifest.xml中,我将我的权限定义为:

  1. <uses-permission android:name="org.dayup.gtask.permission.READ_TASKS"/>

问题是如果我的应用程序安装在另一个应用程序之前(在这种情况下是gtask),我会收到以下错误

  1. 05-08 15:26:45.380: ERROR/ActivityThread(18564): Failed to find provider info for org.dayup.gtask.key
  2. 05-08 15:26:45.390: ERROR/AndroidRuntime(18509): FATAL EXCEPTION: Thread-12
  3. java.lang.SecurityException: Permission Denial: reading org.dayup.gtask.GoogleTaskProvider uri content://org.dayup.gtask.data/tasks from pid=18509,uid=10114 requires org.dayup.gtask.permission.READ_TASKS
  4. at android.os.Parcel.readException(Parcel.java:1322)
  5. at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
  6. at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
  7. at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:372)
  8. at android.content.ContentProviderProxy.query(ContentProviderNative.java:408)
  9. at android.content.ContentResolver.query(ContentResolver.java:264)

如果我重新安装我的应用程序或我的应用程序安装后其他应用程序一切正常.
有关如何在运行时重新获取这些权限的任何想法?

解决方法

有一个解决方法.
诀窍是将权限定义为您自己的权限.

这是一个例子:

  1. <uses-permission android:name="com.timsu.astrid.permission.READ_TASKS" />
  2. <permission android:name="com.timsu.astrid.permission.READ_TASKS"
  3. android:permissionGroup="android.permission-group.PERSONAL_INFO"
  4. android:protectionLevel="dangerous" android:label="read astrid tasks data" />
  5. <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
  6. <!-- dato gtask -->
  7. <uses-permission android:name="org.dayup.gtask.permission.READ_TASKS" />
  8. <permission android:name="org.dayup.gtask.permission.READ_TASKS"
  9. android:permissionGroup="android.permission-group.PERSONAL_INFO"
  10. android:protectionLevel="dangerous" android:label="read dato gtasks tasks data" />

猜你在找的Android相关文章