自定义内容提供商访问其他应用

时间:2014-09-19 12:17:10

标签: android android-contentprovider android-permissions

我有两个应用程序。其中一个有自定义内容提供商,其工作方式就像魅力一样。

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相对较新,所以对于经验丰富的开发人员来说问题可能很明显。

有什么想法吗?还有其他人以前遇到过同样的问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

定义自定义<permission>的应用必须先安装在通过<uses-permission>请求的应用之前。如果安装顺序错误,则<uses-permission>应用程序无法获得权限,必须卸载并重新安装。

Custom permissions in general are risky for SDK apps

答案 1 :(得分:0)

确保两个应用程序在清单中都具有权限属性。

<permission android:name="com.example.permission.READ" />

我在消费应用程序中仅具有use-permission属性,并且确实存在此问题。如果先安装内容提供商应用程序,它将起作用,但如果再安装内容提供商应用程序,它将失败。

使用方客户端应用程序也具有权限属性时,无论应用程序安装顺序如何,它都将起作用。

相关问题