2017-07-26 18 views
0

私は2つの異なるアプリケーションを持っています。 App Aは、定義されたカスタムアクセス権を必要とするカスタムアクセス権とコンテンツプロバイダを定義します。 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:アプリ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:アプリケーションBはその権限を使用しています。しかし、アプリAのコンテンツプロバイダにアクセスしようと、私は次のエラーを取得しますB:

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

クエリコードAppで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 

アプリのインストール順序もわかります。私はまずApp AとApp 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の新しいバージョンに新しいパーミッションの扱いを必要と考えるかもしれません)

関連する問題