2017-07-26 44 views
0

我有兩個不同的應用程序。應用程序A定義了需要定義的自定義權限的自定義權限和內容提供者。應用程序B使用的許可,並試圖訪問應用程序A的內容提供商但是,我得到以下錯誤:使用自定義權限閱讀內容提供者時獲取權限拒絕

java.lang.SecurityException: Permission Denial: reading com.casimirlab.simpleDeadlines.provider.DeadlineProvider uri content://com.casimirlab.simpleDeadlines.provider/deadlines from pid=17350, uid=10070 requires com.casimirlab.simpleDeadlines.READ_DEADLINE_DATABASE, or grantUriPermission() 

AndroidManifest.xml中爲App答:

<Permission 
android:name="com.casimirlab.simpleDeadlines.READ_DEADLINE_DATABASE" 
android:protectionLevel="normal"> 
</Permission> 

<uses-permission android:name="com.casimirlab.simpleDeadlines.READ_DEADLINE_DATABASE" /> 

... 

<provider 
     android:name=".provider.DeadlineProvider" 
     android:authorities="com.casimirlab.simpleDeadlines.provider" 
     android:readPermission="com.casimirlab.simpleDeadlines.READ_DEADLINE_DATABASE" 
     android:exported="true" 
     android:grantUriPermissions="true" /> 

AndroidManifest.xml中爲App B:

<uses-permission android:name="com.casimirlab.simpleDeadlines.READ_DEADLINE_DATABASE" /> 

查詢代碼在應用程序B:

Uri uri = Uri.parse("content://com.casimirlab.simpleDeadlines.provider/deadlines"); 
ContentResolver cr = getContentResolver(); 
Cursor cursor = cr.query(uri, null, null, null, null); 

我對這兩款應用都使用了以下版本。

compileSdkVersion 23 
buildToolsVersion '25.0.0' 

minSdkVersion 10 
targetSdkVersion 23 

我也知道應用程序安裝的順序。我首先安裝應用程序A,然後安裝應用程序B.

我已閱讀其他相關問題,但其解決方案無法幫助我。

回答

0

返修您的許可聲明,XML是大小寫敏感的:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.casimirlab.simpleDeadlines"> 

    <permission android:name="com.casimirlab.simpleDeadlines.READ_DEADLINE_DATABASE" 
       android:protectionLevel="normal" /> 
    ... 
</manifest> 

你可能會考慮宣佈的保護級別「危險」,要求用戶確認,允許它(和需要更新的權限處理新版Android )