apicloud 打包的APP启动后主动请求存储权限

apicloud 打包的一个安卓APP,在手机模拟器可以正常使用,在真机装上之后下载视频提示存储权限不可用,

需要手动到APP权限里面设置,一开始以为是编译的问题,找了一下编译的设置,全部权限都开启

但是真机上面就是不提示需要授权权限

查到两篇关于权限设置的文章

官方论坛中关于APP动态权限及Android平台targetSdkVersion设置的说明
https://community.apicloud.com/bbs/thread-110959-1-1.html

也就是说将APP的targetSdkVersion规则提升到26后,会发现如果新下载的APP默认是不开启权限的

APP内凡是有涉及需要使用手机权限的地方都需要做权限开启判断

这时候我们就必须通过监听APP是否已经开启了权限并提示用户开启来避免出现此类问题

这边要求不高,所以我就在APP开启页面,主动唤起权限的功能页面中调用该方法进行提示,具体代码跟设置如下

我这边用native app进行打包,不建议直接用web打包, 在官方hello APP 上面添加

调用示例

manifest.xml 文件配置

common.js

common.js 源代码

var publicFunction = {
    //检测APP所需权限是否开启,并提示用户开启对应权限
    //callBack回调事件可自行在调用的时候写入
    checkPermission: function(callBack){
 
        //验证照相、相册、存储、通知权限(有需要可以继续增加,详看对应文档)https://docs.apicloud.com/Client-API/api#hasPermission
        // ['camera','photos','storage','notification']
        var resultList = api.hasPermission({
            list:['storage','notification']
        });

        var _permission = new Array();
        for (var i = 0; i < resultList.length; i++) {
            if(resultList[i].granted == false){
                _permission.push(resultList[i].name);
            }
        }
        // alert(JSON.stringify(resultList))
        if(_permission && JSON.stringify(_permission) != '[]'){
            api.requestPermission({
                list:_permission,
                code:1
            }, function(ret, err){
                for (var i = 0; i < ret.list.length; i++) {
                    if(ret.list[i].granted == false){
                        api.confirm({
                            title: '缺少权限,将导致部分功能无法使用',
                            msg: '请确认开启对应权限。',
                            buttons: ['确定开启', '取消']
                        }, function(ret, err) {
                            if(ret.buttonIndex == 1){
                                publicFunction.checkPermission(callBack);
                            }else{
                                callBack();
                                return;
                            }
                             
                        });
                    }else{
 
                        callBack();
                        return;
                    }
                }
            });
        }else{
            callBack();
            return;
        }
    }
}

按需加载的话建议在要使用到照相、电话等主动唤起权限的功能页面中调用该方法进行提示

说到这不得不说说 apicloud 的文档体验,想找个东西很难,就比如说现在这个想知道各个权限参数名都找不到(难受-_-!!)

本文效果代码参考自翻滚的胖子, 原文链接  http://iskeys.com/article/39

给TA支持
共{{data.count}}人
人已支持
知道随笔

解锁Nginx防火墙,网站监控报表

2021-8-19 12:03:26

知道docker工作日志转贴的文章

win10 Docker Desktop 启动失败 Failed to set version to docker-desktop: exit code: -1

2021-10-3 21:26:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索