android - 为什么即使在 android:targetSdkVersion = "25" 中 Uri.fromFile 也没有问题?
问题描述
在 Android 应用程序中,
我听说我不应该使用Uri.fromFile
以下targetSdkVersion >= 24
链接:
但我在以下情况下使用它没有任何崩溃:
android:targetSdkVersion = "25" , 安卓牛轧糖
else if (requestCode > Constants.Uri_M4_Images_Camera_Filter)
{
if (resultCode == RESULT_OK)
{
Bitmap photo = (Bitmap) data.getExtras().get("data");
Uri_M4_ViewPager_M4Image_Camera = Uri.fromFile(saveImage2(photo));
我可以Uri_M4_ViewPager_M4Image_Camera
毫无问题地在毕加索中使用,为什么?
解决方案
问题Uri.fromFile()
在于将其传递Uri
给Intent
. 这将触发一个FileUriExposedException
. 即使您破解了它,在 Android 10+ 上,其他应用程序也无法访问该文件。
在您自己的应用程序中使用Uri.fromFile()
通常是不必要的。例如,毕加索可以使用File
; 您无需将其转换为 aUri
就可以让 Picasso 将其转换回来。但是,如果您真的想file
Uri
在自己的应用程序中使用 a,欢迎您这样做。只是不要将它传递给另一个应用程序。
推荐阅读
- python - 如何返回字典格式?
- regex - Textwrangler 中的正则表达式 - 删除两个字符之间的字符串
- css - 如何在 React.js 中为选定的帖子添加 Active 类
- javascript - 没有在每个类实例上调用装饰器
- html - 使 flex div 的子级具有相同的高度(基于每个“行”)
- angular - 'Observable<[{}, {}]>' 类型上不存在属性 'map'
- angular - 即使使用 MenuController 启用菜单后,也无法在 Ionic 3 中看到侧面菜单图标
- azure - 未触发警报或未执行操作组。如何调查?
- xcode - Cocoa 应用程序未在 High Sierra 上加载视图或运行代码
- reactjs - react-redux-firebase V3 问题