コンテンツ プロバイダとテスト アプリケーションの両方がデバッグ キーで署名されています。パーミッションが適用されていない場合、クライアントは通常どおりコンテンツを受け取りますが、コンテンツにパーミッションを適用したいと考えています。したがって、次の行がコンテンツ プロバイダーのマニフェスト ファイルに追加されます。
<permission android:name="org.example.provider.READ"
android:permissionGroup="org.example.group.DATA_ACCESS"
android:label="@string/readonlyaccess"
android:protectionLevel="signature" />
<application
...
<provider android:name=".ImageContentProvider"
android:authorities="org.example.provider"
android:readPermission="org.example.provider.READ" />
クライアントのマニフェスト ファイルに、次の行が追加されます。
<uses-permission android:name="org.example.provider.READ" />
プロバイダーからデータを取得しようとすると、次のエラーが発生します。
09-13 22:38:20.995: E/AndroidRuntime(13979): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hello/com.example.hello.HelloActivity}: java.lang.SecurityException: Permission Denial: reading org.example.ImageContentProvider uri content://org.example.provider/file from pid=13979, uid=10040 requires org.example.provider.READ
何か不足していますか、それともアプリケーションがデバッグ キーによって署名されているという事実に関連していますか? 問題を解決するには?プロバイダーに追加する提案も見ましたuses-permission
が、これも役に立ちません。注意。これが重要である可能性がある場合、これはエミュレーター内でチェックされます。
デフォルトのデバッグ キーストアで署名すると、関連する質問が SecurityException をスローすることがわかりましたが、実際の解決策にはなりません。