当前位置:   article > 正文

apicloud app动态权限及android平台targetSdkVersion设置_targetsdkversion设置>=29后在android10+系统设备不支持当前路径。请更改为

targetsdkversion设置>=29后在android10+系统设备不支持当前路径。请更改为应用运

–关于Android动态权限和targetSdkVersion背景:

targetSdkVersion:自2018年11月开始,GooglePlay以及国内大部分应用市场要求APP编译目标SDK必须为26及以上,否则不予提交审核;有许多已有APP转到APICloud开发后,因targetSdkVersion降级而导致无法覆盖安装;

动态权限:Android自系统6.0开始,提供动态权限机制,对于敏感权限(存储,定位,录音,拍照,录像等),需要在APP运行过程中动态向用户申请,这就和IOS系统的权限使用体验保持一致了(IOS一直以来就是动态权限)。

在Android上使用动态权限,要求APP编译的目标SDK(即targetSdkVersion)为23及以上(对应为android6.0及以上系统),22及以下系统会执行缺省处理(手机厂商也可能定制处理),APICloud为满足更普遍的开发需求,默认配置targetSdkVersion为22,即权限走系统缺省处理,如何开启动态权限,需要按照如下说明操作。

1、在res文件下创建manifest.xml文件,将其中的targetSdkVersion更新为目标值,例如28。

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
    <application name="targetSdkVersion" value="28"/>
</manifest>
  • 1
  • 2
  • 3
  • 4

2、将app代码中所有涉及到需要动态权限的操作,改造一遍 (例如进行拍照录制视频等需要使用摄像头,以前的缺省处理中不需要申请摄像头权限,而开启动态权限后,必须在进行拍照之前,判断是否有摄像头权限,没有则进行申请,只有用户同意了摄像头权限才能进行接下来拍照的操作);

opWithPermission('storage')
function hasPermission(one_per){
        var perms = new Array();
        if(one_per){
            perms.push(one_per);
        }else{
            var prs = document.getElementsByName("p_list");
            for(var i = 0; i < prs.length; i++){
                if(prs[i].checked){
                    perms.push(prs[i].value);
                }
            }
        }
        var rets = api.hasPermission({
            list:perms
        });
        if(!one_per){
            $alert('判断结果:' + JSON.stringify(rets));
            return;
        }
        return rets;
    }

    function reqPermission(one_per, callback){
        var perms = new Array();
        if(one_per){
            perms.push(one_per);
        }else{
            var prs = document.getElementsByName("p_list_r");
            for(var i = 0; i < prs.length; i++){
                if(prs[i].checked){
                    perms.push(prs[i].value);
                }
            }
         }
        api.requestPermission({
            list: ['storage','camera'],
            code: 100001
        }, function(ret, err){
            if(callback){
                callback(ret);
                return;
            }
            var str = '请求结果:\n';
            str += '请求码: ' + ret.code + '\n';
            str += "是否勾选\"不再询问\"按钮: " + (ret.never ? '是' : '否') + '\n';
            str += '请求结果: \n';
            var list = ret.list;
            for(var i in list){
                str += list[i].name + '=' + list[i].granted + '\n';
            }
            //$alert(str);
            console.log(JSON.stringify(ret));
        });
    }

    function opWithPermission(perm){
        if(!confirmPer(perm)){
            return;
        }
        if('storage' == perm){
            if(!confirmPer('camera')){
                return;
            }
        }
    }

    function confirmPer(perm){
        var has = hasPermission(perm);
        if(perm=="camera"){
            var permtext = '相机'
        }
        if(perm=="storage"){
            var permtext = '存储'
        }
        if(!has || !has[0] || !has[0].granted){
            // api.confirm({
            //     title: '提醒',
            //     msg: '没有获得 ' + permtext + " 权限\n是否前往设置?",
            //     buttons: ['去设置', '取消']
            // }, function(ret, err) {
            //     if(1 == ret.buttonIndex){
            //         reqPermission(perm);
            //     }
            // });
            reqPermission(perm);
            return false;
        }
        return true;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/885108
推荐阅读
相关标签
  

闽ICP备14008679号