Android文件类型转换(适用于Android10等)

文件类型转换
- 前言
- 一、创建文件
- 二、File转Uri
- 三、Bitmap转File
- 四、stream转File
- 五、Uri转File
- 总结
前言
关于文件转换,网上有很多博客都有过介绍,但都过于陈旧。
因此,根据最近的一个Android项目,整合记录一下关于文件类型转换的相关操作,留已备用。
此处相关代码已在Android9、10机型上做过相关测试。
在此注意,关于Android相关权限问题不在此做讨论。
一、创建文件
先写一下文件创建的函数吧,也是方便后来人使用。
二、File转Uri
首先要注意,URI和Uri是两种类型,不过开发Android时显示图片通常用的是Uri
此外,转换Uri也要根据用途范围分为两种转换方式:
- 该文件仅用于该app(例如展示图片时ImageView所使用的Uri)
- 该文件将暴露于该app之外(例如使用Intent时要将文件的Uri传给Extra)
为什么要分出两种方式呢,因为Android 7.0以上不再允许在app中把 file://Uri 暴露给其他app,而第一种简单转换方式在本地用仍然是可行的,并未暴露给其它app。
否则就会出现android.os.FileUriExposedException
错误,这时必须使用第二种通用方法,使用它转换得到的Uri是 content:// Uri 的形式。
但需要注意,使用FileProvider需要做额外的配置,具体请参阅Android开发者文档以及相关链接1、相关链接2。其中部分链接可能需要科学上网。
三、Bitmap转File
四、stream转File
五、Uri转File
在此指出,Android可以直接通过Uri获取其数据的,而不需要将Uri转换得到相应的文件路径。
开发时只需要创建文件,可以直接将Uri的数据存放到该文件中。
总结
没什么别的,反正安卓兼容性挺让人头疼的。