融雲即時通信SDK集成 -- 定製UI(三) ——兼容Android Q

融雲即時通信SDK集成 -- 定製UI(三) ——兼容Android Q

背景:

最近公司新上的app要加上即時通信的功能, 本身快速實現一個固然是不可能的了(項目deadline也頂不住哇).就從各家成熟的SDK廠商選來選去的, 各有各的好也各有各的不足.最後點兵點將,選了融雲家的SDK(老闆說了算hhhh).
他家的官網和文檔地址:
官網:https://www.rongcloud.cn/
文檔:https://docs.rongcloud.cn/v4java

如何兼容Android Q

Android 10 適配
前言
爲了讓用戶更好地控制本身的文件,並限制文件混亂的狀況,Android 10(Q) 修改了 APP 訪問外部存儲中文件的方法。外部存儲的新特性被稱爲 Scoped Storage。android

Android 10(Q) 仍然使用 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 做爲面向用戶的存儲相關運行時權限,但如今即便獲取了這些權限,訪問外部存儲也受到了限制。APP 須要這些運行時權限的情景發生了變化,且各類狀況下外部存儲對 APP 的可見性也發生了變化 在 Scoped Storage 新特性中,外部存儲空間被分爲兩部分:app

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

公共目錄下的文件在 APP 卸載後,不會刪除。ui

APP 能夠經過 SAF(System Access Framework)、MediaStore 接口訪問其中的文件。this

● App-specific 目錄code

APP 卸載後,數據會清除。視頻

APP 的私密目錄,APP 訪問本身的 App-specific 目錄時無需任何權限。接口

融雲關於 Android 10(Q)適配
以前 SDK 將媒體文件存儲於 /sdcard/RongCloud/Media 中,因此在 android 10(Q) 系統上會有聊天沒法使用的狀況,新版本更新後,會將媒體消息存儲於 :sdcard/Android/data/包名/files/ 中,以保證 sdk 功能的正常使用ci

用戶須要作的適配工做
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/
自定義媒體文件 會根據媒體類型存儲到以上目錄中
相關文章
相關標籤/搜索