![](https://img.haomeiwen.com/i25021128/fcc7c4be08d9a528.png)
上周发了一个版本,因为升级了一些开源库,我把项目的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
设备上面发现的。
网友评论