圖片來源網絡,入侵必刪
上周發了一個版本,因為升級了一些開源庫,我把項目的targetSdk
調到了31
,這樣導致我發上去的版本會出現問題。問題是在Android11以上的設備出現沒有文件儲存權限
,導致內部更新失敗。
主要的問題是:
Android 10之后,官方對文件管理進行了分區。
雖然我們看到了是獲取了文件儲存權限,但是很尷尬的事情是,我們不是訪問所有文件的權限。
解決方案
這里使用XXPermissions
權限框架申請權限的,具體的代碼如下:
XXPermissions.with(this)
.permission(Permission.MANAGE_EXTERNAL_STORAGE)
.request(new OnPermissionCallback() {
@Override
public void onGranted(List<String> permissions, boolean all) {
if (all) {
// 有權限的邏輯
checkDownload();
}else {
// 沒有權限的邏輯
}
@Override
public void onDenied(List<String> permissions, boolean never) {}
});
這個框架有幫我們判斷是Android 10以上
還是Android 10以下
申請文件儲存
權限,相對來說比較簡單。這里需要注意的是,我們申請的權限是Permission.MANAGE_EXTERNAL_STORAGE
,不要搞錯了。
如果想要開發中復測這個問題,需要使用非鴻蒙系統的設備,這個問題是在VIVO
設備上面發現的。