Android 自定义内容提供商从另一个应用程序访问

Android 自定义内容提供商从另一个应用程序访问,android,android-contentprovider,android-permissions,Android,Android Contentprovider,Android Permissions,我有两个应用程序。其中一个有一个定制的内容提供商,它的工作方式很有魅力 应用程序A->具有提供商的应用程序 应用程序B->需要提供商提供数据的应用程序 在这种情况下,一切正常: 第一:安装应用程序A 第二:安装应用程序B 但是当我这样做的时候: 第一:安装应用程序B 第二:安装应用程序A 我得到一个错误: 09-19 13:07:22.576: E/AndroidRuntime(14621): Caused by: java.lang.SecurityException: Permission

我有两个应用程序。其中一个有一个定制的内容提供商,它的工作方式很有魅力

应用程序A->具有提供商的应用程序

应用程序B->需要提供商提供数据的应用程序

在这种情况下,一切正常:

第一:安装应用程序A

第二:安装应用程序B

但是当我这样做的时候:

第一:安装应用程序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
我的权限在清单文件中有明确的说明,它们是正确的,因为如果我以不同的顺序安装应用程序,它们就会起作用

这是我第一次使用内容提供商,而且我对安卓系统比较陌生,所以对于经验丰富的开发者来说,这个问题可能是显而易见的

有什么想法吗?以前有没有其他人经历过同样的问题


提前感谢。

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


.

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

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

我在消费应用程序中只有“使用权限”属性,而恰恰是这个问题。如果先安装内容提供商应用程序,它将工作,但如果第二次安装内容提供商应用程序,它将失败


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

捕获此异常并告诉用户重新安装应用程序。。。这是你能做的唯一一件事。。。由于公共共享首选项已被弃用,我认为我唯一可以使用的是内容提供商。您有类似的建议吗?@user3328051:您的问题不在于使用
ContentProvider
——任何涉及自定义权限的IPC都会遇到相同的问题。此外,使用
的应用程序需要处理以下情况:用户不想要其他应用程序,无法安装其他应用程序(例如,它与他们的设备不兼容),安装并稍后卸载其他应用程序,等等。抱歉,4年后,使用时如何处理SecurityExceptionLoaderManager@Pankaj:我建议您提出一个单独的堆栈溢出问题,在该问题中,您可以提供一个完整的问题说明和完整的问题说明。为了澄清这一点,permission属性定义了权限。为了使其工作,两个应用程序必须使用相同的签名进行签名,才能定义相同的权限。如果两个应用程序都使用相同的签名签名,这将解决Commonware描述的安装顺序问题