我试图从第三方应用程序(例如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)获取图像位图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)