从Google相册应用获取共享图像

时间:2017-05-19 16:21:04

标签: android security google-photos

我的问题是下一个:我的应用程序通过清单

中的意图过滤器从Google照片接收图像
<intent-filter android:label="@string/app_name">
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />

        <data android:mimeType="text/*" />
        <data android:mimeType="image/*" />
    </intent-filter>

然后我得到这样的uri:

mSharedImageUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);

然后我将事件发送到Fragment并使用此Fragment启动另一个Activity,该片段是与共享图像uri一起接收的事件。授予权限后,请求“READ_EXTERNAL”权限 getContentResolver().openInputStream(uri) 得到Exif数据,现在我得到了下一个数据:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=75542, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.my.app/com.my.app.activities.Activity}: java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord{be2762c 9157:com.my.app/u0a931} (pid=9157, uid=10931) that is not exported from uid 10086
                                                                     at android.app.ActivityThread.deliverResults(ActivityThread.java:3940)
                                                                     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3983)
                                                                     at android.app.ActivityThread.-wrap16(ActivityThread.java)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1548)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                     at android.os.Looper.loop(Looper.java:207)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5765)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
                                                                  Caused by: java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord{be2762c 9157:com.my.app/u0a931} (pid=9157, uid=10931) that is not exported from uid 10086

但是,如果在第一个活动上发出权限请求或者当前授予了权限,则一切正常。 你能给我一个建议吗?它早先工作,例如关于一个mounth。

1 个答案:

答案 0 :(得分:0)

  

并使用此片段启动另一个Activity,该片段是使用共享图像uri

接收的事件

在用于将addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)投放到其他活动的Intent上调用Uri。否则,该活动将无法访问该内容。