安卓11以后,文件读写权限申请变得更严格,常见的就是读取sdcard内的公共文件都提示没有权限,以下方法用于申请所有文件访问读写权限(并非所有空间都能读写,具体查看相关文档),添加MANAGE_EXTERNAL_STORAGE权限可能导致google play审核不通过,目前一般只允许文件管理器之类主要功能依赖文件读写的应用上架。
/**
* 安卓11及以上版本(SDK>=30),需要申请MANAGE_EXTERNAL_STORAGE权限,否则按钮无法点击,如下
* 在manifest.json>app-plus>distribute>android>permissions中添加权限
* <uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>
*/
requestPermission() {
const main = plus.android.runtimeMainActivity();
const pkName = main.getPackageName();
const Intent = plus.android.importClass("android.content.Intent");
const Build = plus.android.importClass("android.os.Build");
const Settings = plus.android.importClass("android.provider.Settings");
const Environment = plus.android.importClass("android.os.Environment");
if (Build.VERSION.SDK_INT >= 30) {
// 权限未获取跳转到设置页
if (!Environment.isExternalStorageManager()) {
let intent = new Intent(
Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
);
const Uri = plus.android.importClass("android.net.Uri");
const uri = Uri.fromParts("package", pkName, null);
intent.setData(uri);
main.startActivity(intent);
}
// 权限已获取,自定义处理
else {
}
}
}
5 个评论
要回复文章请先登录或注册
用户2746105
用户2746105
3***@qq.com
syczuan (作者)
3***@qq.com