Android:通过content: URI从第三方应用程序(例如WhatsApp)获取图像位图

Android:通过content: URI从第三方应用程序(例如WhatsApp)获取图像位图,第1张

概述我试图从第三方应用程序(例如WhatsApp)获取图像到我的应用程序(在Marshmallow上测试).当我从WhatsApp“分享图像”并与我的应用程序共享时,我得到这样的URI:content://com.whatsapp.provider.media/item/61025但是在我的应用程序中,当我使用上面的URI调用getContentResolver().o

我试图从第三方应用程序(例如WhatsApp)获取图像到我的应用程序(在Marshmallow上测试).当我从WhatsApp“分享图像”并与我的应用程序共享时,我得到这样的URI:

content://com.whatsapp.provIDer.media/item/61025

但是在我的应用程序中,当我使用上面的URI调用getContentResolver().openinputStream(uri)或getContentResolver().openfileDescriptor(uri,“r”)时,它会因异常而崩溃:

java.lang.SecurityException: Permission Denial: opening provIDer
com.whatsapp.MediaProvIDer from ProcessRecord{a4b804a
30321:com.myapp/u0a145} (pID=30321, uID=10145) that is not exported
from uID 10083

到目前为止我尝试了什么

我在SO上查找了这个例外,发现similar question构成但是要从Google相机导入图像,并且需要添加以下权限:

< uses-permission androID:name =“com.Google.androID.apps.photos.permission.Google_PHOTOS”/>

但是没有对此感到满意,因为可能有许多应用程序,需要为每个应用程序或其他内容添加权限.

在其他一些answers中,建议立即从内容提供商处读取/复制数据.但不确定如何.因为我在openinputStream本身中得到了异常.

我还必须提一下,WhatsApp图像可以与其他应用程序(例如Google Drive)成功共享,因此必须有一些方法可以做到这一点.

请有人可以提供分享提示或工作解决方案吗?

解决方法:

好.我发现问题出在哪里.在我的应用程序的初始活动我是存储内容的URI(这是我从第三方应用程序例如WhatsApp或Chrome等为内容例如有://com.whatsapp.provIDer.media/item/61025)在数组中,并从被访问它其他活动.

那不对.我得到了this答案的提示,我在获得共享内容后立即从应用程序的启动器活动中调用了getContentResolver().openinputStream(uri).它起作用了,没有抛出任何异常.

总结

以上是内存溢出为你收集整理的Android:通过content:// URI从第三方应用程序(例如WhatsApp)获取图像位图全部内容,希望文章能够帮你解决Android:通过content:// URI从第三方应用程序(例如WhatsApp)获取图像位图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存