Sta*_*tan 3 permissions android android-contentprovider
我有一个内容提供程序和一个测试应用程序,两者都使用调试密钥进行签名。如果未应用权限,客户端通常会收到内容,但我想对这些内容应用权限。因此,将以下行添加到内容提供者的清单文件中:
<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" />
Run Code Online (Sandbox Code Playgroud)
在客户端的清单文件中添加以下行:
<uses-permission android:name="org.example.provider.READ" />
Run Code Online (Sandbox Code Playgroud)
当我尝试从提供商获取数据时,出现错误:
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
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了某些内容,或者与应用程序由调试密钥签名这一事实有关?如何解决问题?我也看到了添加到提供程序的建议uses-permission
,但这也没有帮助。注意。如果这有任何重要性,则会在模拟器内部进行检查。
我发现一个相关问题在使用默认调试密钥库签名时抛出 SecurityException,但它没有提供实际的解决方案。
是的,它可以与调试密钥库一起使用,至少在我上次尝试时是这样。
我会<permission>
在两个应用程序中都有该元素。如果您<uses-permission>
先安装一个,然后再安装另一个<permission>
,则会遇到问题。权限需要在遇到之前定义<uses-permission>
,最简单的方法是将<permission>
两者都放入。
归档时间: |
|
查看次数: |
2497 次 |
最近记录: |