我正在尝试从第三方应用程序(例如WhatsApp)到我的应用程序(正在棉花糖上测试)的图像。当我从WhatsApp中“共享图像”并与我的应用程序共享时,我得到的URI如下所示:
content://com.whatsapp.provider.media/item/61025
Run Code Online (Sandbox Code Playgroud)
但是在我的应用中,当我调用getContentResolver().openInputStream(uri)或getContentResolver().openFileDescriptor(uri, "r")使用上面的URI时,它崩溃并发生以下异常:
java.lang.SecurityException:权限拒绝:从ProcessRecord {a4b804a 30321:com.myapp / u0a145}(pid = 30321,uid = 10145)打开未从uid 10083导出的提供者com.whatsapp.MediaProvider
到目前为止我尝试过的
我在SO上查找此异常,并发现了类似的问题,但要从Google相册导入图像,并需要添加权限,例如:
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>
但这并不让您感到困惑,因为可能有许多应用程序,并且需要为每个应用程序或其他内容添加权限。
在其他一些答案中,建议立即从内容提供者读取/复制数据。但不确定如何。因为我openInputStream本身就有例外。
我还必须提到,WhatsApp图像可以成功与其他应用程序(例如Google云端硬盘)共享,因此必须有某种方法可以做到这一点。
请有人可以提供共享提示或可行的解决方案吗?
android android-contentresolver android-permissions android-6.0-marshmallow