Android Q(10) 文件存储适配,SDK 是否适配(兼容) Android 10 ( Q ) ?

Android 10 适配

前言

为了让用户更好地控制自己的文件,并限制文件混乱的情况,Android 10(Q) 修改了 APP 访问外部存储中文件的方法。外部存储的新特性被称为 Scoped Storage。

Android 10(Q) 仍然使用 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 作为面向用户的存储相关运行时权限,但现在即使获取了这些权限,访问外部存储也受到了限制。APP 需要这些运行时权限的情景发生了变化,且各种情况下外部存储对 APP 的可见性也发生了变化

在 Scoped Storage 新特性中,外部存储空间被分为两部分:

● 公共目录:Downloads、Documents、Pictures 、DCIM、Movies、Music、Ringtones 等

公共目录下的文件在 APP 卸载后,不会删除。

APP 可以通过 SAF(System Access Framework)、MediaStore 接口访问其中的文件。

● App-specific 目录

APP 卸载后,数据会清除。

APP 的私密目录,APP 访问自己的 App-specific 目录时无需任何权限。

融云关于 Android 10(Q)适配

之前 SDK 将媒体文件存储于 /sdcard/RongCloud/Media 中,所以在 android 10(Q) 系统上会有聊天无法使用的情况,新版本更新后,会将媒体消息存储于 :sdcard/Android/data/包名/files/ 中,以保证 sdk 功能的正常使用

用户需要做的适配工作

1.如果您是 kit 的用户,我们对融云基本消息类型进行了全面兼容,如果您自定义了媒体消息,建议您在点击自定义媒体消息时,对本地文件进行检查,如果本地文件流无法读取,调用 RongIM 的 downloadMediaMessage() 方法重新下载更新本地路径

示例代码//1.判断小视频本地文件是否存在

if (sightMessage.getLocalPath() != null && !TextUtils.isEmpty(sightMessage.getLocalPath().toString())) {

return FileUtils.isFileExistsWithUri(this, sightMessage.getLocalPath());

} else {

return false;

}

//2.调用 downloadMediaMessage 下载文件刷新 ui

RongIM.getInstance().downloadMediaMessage(mMessage, downloadMediaMessageCallback);

2.如果您是 lib 的用户,建议您在用户使用到媒体类型消息时,对消息体中的 localPath 进行判断检查,如果本地文件流无法正常访问,请调用 RongIMClient 的 downloadMediaMessage() 方法对媒体文件进行重新下载并更新本地路径,具体代买可参考以上代码进行具体调整

备注

文件存储路径变化不开启 rc_q_storage_mode_enable 的各种文件保存路径

//使用sight模块录制小视频时

录制视频:sdcard/sdcard/RongCloud/Image/应用名/image/

下载音频 /sdcard/RongCloud/Media

下载视频 /sdcard/RongCloud/Media

下载文件 /sdcard/RongCloud/Media

下载 gif /sdcard/RongCloud/Media

自定义媒体文件 /sdcard/RongCloud/Media

开启 rc_q_storage_mode_enable 的各种文件保存路径

//使用sight模块录制小视频时

录制视频:sdcard/Android/data/包名/files/RongCloud/video/

下载音频:sdcard/Android/data/包名/files/RongCloud/audio/

下载视频:sdcard/Android/data/包名/files/RongCloud/video/

下载文件:sdcard/Android/data/包名/files/RongCloud/file/

下载 gif:sdcard/Android/data/包名/files/RongCloud/image/

自定义媒体文件 会根据媒体类型存储到以上目录中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值