android - SecurityException : Permission Denial. 从未从 uid 10027 导出的 xxx 打开提供程序 xxx

标签 android android-contentprovider

<分区>

我有一个项目 A 作为库 jar 文件,其中包含一个 ContentProvider。然后我需要在项目 B 中使用它。如 Manifest 中声明的:

        <provider
        android:authorities="com.gezbox.android.onepiece"
        android:exported="true"
        android:name="com.gezbox.android.api.provider.GezboxProvider"/>

但是问题来了:

 04-17 17:55:50.695: WARN/dalvikvm(5527): threadid=13: thread exiting with uncaught exception (group=0x40def300)
04-17 17:55:50.695: WARN/ActivityManager(258): Permission denied: checkComponentPermission() owningUid=10027
04-17 17:55:50.695: WARN/ActivityManager(258): Permission denied: checkComponentPermission() owningUid=10027
04-17 17:55:50.695: WARN/ActivityManager(258): Permission Denial: opening provider com.gezbox.android.api.provider.GezboxProvider from ProcessRecord{415d5e08 5527:com.gezbox.android.onepiece/u0a31} (pid=5527, uid=10031) that is not exported from uid 10027
04-17 17:55:50.711: ERROR/AndroidRuntime(5527): FATAL EXCEPTION: IntentService[GezboxService]
        java.lang.SecurityException: Permission Denial: opening provider com.gezbox.android.api.provider.GezboxProvider from ProcessRecord{415d5e08 5527:com.gezbox.android.onepiece/u0a31} (pid=5527, uid=10031) that is not exported from uid 10027

        at android.os.Parcel.readException(Parcel.java:1425)
        at android.os.Parcel.readException(Parcel.java:1379)
        at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2354)
        at android.app.ActivityThread.acquireProvider(ActivityThread.java:4219)
        at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:1688)
        at android.content.ContentResolver.acquireProvider(ContentResolver.java:1083)
        at android.content.ContentResolver.acquireContentProviderClient(ContentResolver.java:1146)
        at android.content.ContentResolver.applyBatch(ContentResolver.java:896)
        at com.gezbox.android.api.processor.PostOrderProcessor.updateContentProvider(PostOrderProcessor.java:57)
        at com.gezbox.android.api.processor.PostOrderProcessor.post_order(PostOrderProcessor.java:33)
        at com.gezbox.android.api.GezboxService.onHandleIntent(GezboxService.java:196)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.os.HandlerThread.run(HandlerThread.java:60)

最佳答案

问题解决了。我更改了项目 B 中提供者的提供者的 uri。

是的,我太垃圾了...

库项目是由另一个人编写的,每次我编译项目之前我都需要手动更改 uri 以使其适合正确的路径。

关于android - SecurityException : Permission Denial. 从未从 uid 10027 导出的 xxx 打开提供程序 xxx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16057558/

相关文章:

android - builder.setInverseBackgroundForced(true) 不起作用

android - YouTube播放器观看缓冲的视频丢失

安卓。内容提供者还是数据库?

android - 是否存在用于存储和提供 Google Transit Feed 数据的 Android ContentProvider?

android - 使用 react 抽屉导航在 iOS 上 react native 崩溃

java - 验证后 Fabric 数字在回调中崩溃

android - 没有 LiveData 的房间

android - 如果在 CursorLoader 注册 ContentObserver 之前调用 notifyChange(),CursorLoader 不会刷新

android - 如何让用户在 Android 上查看和播放他们已经可以访问的歌曲(例如,通过 Google Play)?

android - 在 Android 2.x 中删除(原始)联系人