全村最帅的希望
全村最帅的希望
  • 发布:2018-03-27 16:23
  • 更新:2019-06-07 16:22
  • 阅读:2648

android 动态权限请求失效

分类:Native.js

详细问题描述
[内容]
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
[电话]

2018-03-27 16:23 负责人:无 分享
已邀请:
DCloud_heavensoft
  • 5***@qq.com

    这个对于targetSdkVersion小于23的不行,而且云打包出来的targetSdkVersion是为21

    2019-04-16 11:11

  • DCloud_heavensoft

    回复 5***@qq.com:打包的targetSdkVersion在manifest里自己可以定义

    2019-04-17 00:41

Rico大叔

Rico大叔

解决了吗?我还是不能用---我也不是李先打包--

  • DCloud_Android_ST

    http://www.html5plus.org/doc/zh_cn/android.html#plus.android.requestPermissions

    2019-06-06 11:54

该问题目前已经被锁定, 无法添加新回复