详细问题描述
[内容]
android 权限请求进行了优化 新的类
Hbuilder环境下无法导入var ActivityCompat = plus.android.importClass("android.support.v4.app.ActivityCompat"); 云打包也不行 官方默认是否没有导入support 包
重现步骤
[步骤]
运行代码
[结果]
报错 checkSelfPermission is not a funtion(android studio 进行配置后可以弹出权限请求框 但是onRequestPermissionsResult 回调函数没有效果)
[期望]
能够检测并请求权限 希望官方把权限检测可以封装一下
运行环境
HBuilder最新版
[系统版本]
[浏览器版本]
[IDE版本]
[mui版本]
附件
[代码片段]
////////权限请求////////
var main = plus.android.runtimeMainActivity();
var permission = "android.permission.CAMERA";
try {
var ActivityCompat = plus.android.importClass("android.support.v4.app.ActivityCompat");
var CAMERA = ActivityCompat.checkSelfPermission(main, permission);
var arr = new Array();
arr.push(permission);
main.onRequestPermissionsResult = function(requestCode, permissions, grantResults) {
Log("requestCode", requestCode + "?????????");
mui.toast("请给与app调用相机的权限");
if(requestCode == REQUEST_CODE) {
if(grantResults) {
if(grantResults.length > 0 && grantResults[0] == 0) {
mui.toast("app具有使用相机的权限了");
} else {
mui.toast("请给与app调用相机的权限");
}
}
}
};
ActivityCompat.requestPermissions(main, arr, REQUEST_CODE);
} catch(e) {
//TODO handle the exception
console.log(e.message);
}
老代码可以运行 但是不能一次请求多个权限
if(mui.os.android) {
var Build = plus.android.importClass("android.os.Build");
var SDK_INT = Build.VERSION.SDK_INT;
var M = Build.VERSION_CODES.M;
if(SDK_INT >= M) {
if(permission == null || permission == undefined) {
return false;
}
var a = new Array();
a.push(permission);
var context = plus.android.runtimeMainActivity();
var res = plus.android.invoke(context, "checkSelfPermission", permission);
if(res != "0") {
plus.android.invoke(context, "requestPermissions", a, 0);
}
}
}
[安装包]
联系方式
[QQ]2536555456
[电话]
5***@qq.com
这个对于targetSdkVersion小于23的不行,而且云打包出来的targetSdkVersion是为21
2019-04-16 11:11
DCloud_heavensoft
回复 5***@qq.com:打包的targetSdkVersion在manifest里自己可以定义
2019-04-17 00:41