Wir haben die Direct Share-Unterstützung von Android M in unserer App implementiert, erhalten aber SecurityException, wenn wir versuchen, in unserer ChooserTargetService-Implementierung auf den Inhaltsanbieter zuzugreifen. Wir wollen "export = true" nicht für content provider setzen ... .so scheint es, als müssten wir grantUriPermission() aufrufen. Was nicht klar ist, wenn dies der richtige Ansatz ist, ist der Paketname, der an diesen übergeben wird (habe verschiedene erfolglos versucht).Berechtigungen für den ChoosserTargetService und den Inhaltsanbieter
Es folgt Ausnahme erhalten wir:
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)
Können Sie eine [mcve], oder zumindest die Stack-Trace bereitstellen? – CommonsWare