我有两个应用程序。其中一个有自定义内容提供商,其工作方式就像魅力一样。
APP A - >与提供者
的人APP B - >需要提供商数据的那个
在这种情况下一切正常:
1st:安装应用A
第二名:安装应用B
但是当我这样做的时候:
1st:安装应用B
第二名:安装应用A
我收到错误:
09-19 13:07:22.576: E/AndroidRuntime(14621): Caused by: java.lang.SecurityException: Permission Denial: opening provider
uk.co.ringsizer.ui.BirthProvider from ProcessRecord{450c14c8 14621:uk.co.gemtv/u0a360}
(pid=14621, uid=10360) requires com.eir.provider.Size.READ_DATABASE
or com.eir.provider.Size.WRITE_DATABASE
我的权限在清单文件中明确说明,并且它们是正确的,因为如果我以不同的顺序安装应用程序,它的工作原理。
这是我第一次使用内容提供商,而且我对Android相对较新,所以对于经验丰富的开发人员来说问题可能很明显。
有什么想法吗?还有其他人以前遇到过同样的问题吗?
提前致谢。
答案 0 :(得分:2)
定义自定义<permission>
的应用必须先安装在通过<uses-permission>
请求的应用之前。如果安装顺序错误,则<uses-permission>
应用程序无法获得权限,必须卸载并重新安装。
答案 1 :(得分:0)
确保两个应用程序在清单中都具有权限属性。
<permission android:name="com.example.permission.READ" />
我在消费应用程序中仅具有use-permission属性,并且确实存在此问题。如果先安装内容提供商应用程序,它将起作用,但如果再安装内容提供商应用程序,它将失败。
使用方客户端应用程序也具有权限属性时,无论应用程序安装顺序如何,它都将起作用。