【发布时间】:2016-06-16 13:34:36
【问题描述】:
我们已经在我们的应用中实现了 Android M 的 Direct Share 支持,但是当我们尝试在我们的 ChooserTargetService 实现中访问内容提供者时出现 SecurityException。我们不想为内容提供者设置“exported=true”……所以看起来我们需要调用grantUriPermission()。不清楚的是,如果这是正确的方法,传递给它的包名是什么(尝试了各种不成功)。
以下是我们得到的异常:
W Binder : Caught a RuntimeException from the binder stub implementation.
W Binder : java.lang.SecurityException: Permission Denial: reading <my content provider> uri <content provider uri> from pid=0, uid=1000 requires the provider be exported, or grantUriPermission()
W Binder : at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:605)
W Binder : at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:480)
W Binder : at android.content.ContentProvider$Transport.query(ContentProvider.java:211)
W Binder : at android.content.ContentResolver.query(ContentResolver.java:491)
W Binder : at android.content.ContentResolver.query(ContentResolver.java:434)
W Binder : at <my package>.MyChooserTargetService.onGetChooserTargets(MyChooserTargetService.java:66)
W Binder : at android.service.chooser.ChooserTargetService$IChooserTargetServiceWrapper.getChooserTargets(ChooserTargetService.java:147)
W Binder : at android.service.chooser.IChooserTargetService$Stub.onTransact(IChooserTargetService.java:67)
W Binder : at android.os.Binder.execTransact(Binder.java:453)
【问题讨论】:
-
你能提供一个minimal reproducible example,或者至少是堆栈跟踪吗?
标签: android