请选择 进入手机版 | 继续访问电脑版
帖子
帖子
用户
博客
课程
可以直接不做动态权限处理。直接使用系统默认的处理吗
常山赵子云 发表于 2020-3-16 14:41
看帖子。如果不行继续看,继续操作,直到可以为止。

我是根据您帖子的源代码运行的,也是有这个问题
api.js代码如下:
    /**
     *        判断APP是否持有该权限
     * @param array   one_per          - 权限数组['camera','location']
     */
    u.hasPermission = function(one_per) {
        var perms = new Array();
        if(one_per){
          perms.push(one_per);
        }
        var rets = api.hasPermission({
          list:perms
        });
        if(!one_per){
          apialert('判断结果:' + JSON.stringify(rets));
          return;
        }
        return rets;
    }

    /**
     *        获取权限
     * @param array                one_per          - 权限数组['camera','location']
     * @param function  callback          - 回调函数
     */
    u.reqPermission = function(one_per, callback) {
            var perms = new Array();
            if(one_per){
              perms.push(one_per);
            }
            api.requestPermission({
                list: perms,
                code: 100001
            }, function(ret, err) {
                if(callback){
                  callback(ret);
                  return;
                }
                //获取处理结果
                var list = ret.list;
                for (var i in list) {
                    //只有有一项权限不足,就返回
                    if (list[i].granted == false) {
                        api.toast({
                            msg: '权限不足,无法进行下一步操作',
                            duration: 2000,
                            location: 'bottom'
                        });
                        return false;
                    }
                }
            });
        }
        /**
         * 判断是否持有数组中的权限,无权限获取对应的权限
         * @param array                perm                  - 权限数组['camera','location']
         * @param function  callback          - 回调函数
         */
    u.confirmPer = function(perm, callback) {
            var has = $api.hasPermission(perm);
            console.log("has==>"+JSON.stringify(has));
                        if(!has || !has[0] || !has[0].granted){
                                api.confirm({
                                        title: '提醒',
                                        msg: '没有获得 ' + perm + " 权限\n是否前往设置?",
                                        buttons: ['去设置', '取消']
                                    }, function(ret, err) {
                                        if(1 == ret.buttonIndex){
                                                reqPermission(perm);
                                        }
                                    });
                                return false;
                        }
                        return true;
        }
        //权限用到的方法结束

//调用方法如下:
var falg = $api.confirmPer('camera');
橘子不是唯一的水果 发表于 2020-3-16 16:14
api.js代码如下:
    /**
     *        判断APP是否持有该权限

老哥  你照片的权限怎么判断的,就是点击上传的时候就要调用帖子的方法,我是用input file的,这个好像只有change事件啊,你是怎么在点击的时候先调用判断再执行上传图的方法
海贼王草帽路飞 发表于 2020-3-16 16:53
老哥  你照片的权限怎么判断的,就是点击上传的时候就要调用帖子的方法,我是用input file的,这个好像只 ...

我是在点击上传的时候调用这个方法的。var falg = $api.confirmPer('camera');
html布局:
<div class="white flex midddle_photo">
                        <span onclick="openCamera()" tapmode="" class="photo header_row1"></span>
                    </div>
js代码:
function openCamera() {
      var flag = $api.confirmPer('camera');
      if(flag){
        openCamera2();
      }else{
        api.toast({
            msg: '权限不足',
            duration: 2000,
            location: 'bottom'
        });
      }
    }
橘子不是唯一的水果 发表于 2020-3-16 17:15
我是在点击上传的时候调用这个方法的。var falg = $api.confirmPer('camera');
html布局:

我点击上传图片的是  input file的形式,这个一点就打开了
橘子不是唯一的水果 发表于 2020-3-16 17:15
我是在点击上传的时候调用这个方法的。var falg = $api.confirmPer('camera');
html布局:

不写这个判断不知会不会怎么样
12
帖子
0
勋章
77
Y币
config.xml配置了<preference name="android_abi" value="arm64-v8a"/>
将manifest.xml放到res下后,修改了targetSdkVersion为28,云编译选择的固件要求是5.0.1,编译安卓正式版加固后,手机安装后打不开,没有任何提示,请问是什么原因呢?
比如我上传图片这个操作,有权限的时候,还要弹出是否允许的那个弹窗吗,还是直接执行我的上传代码呢
ceshi () {
      var has = api.hasPermission({
        list: ['photos', 'camera']
      });
      this.sta = has
      if (!has || !has[0] || !has[0].granted) {
        api.requestPermission({
          list: ['photos', 'camera'],
          code: 100001
        }, function (ret, err) {
          var str = '请求结果:\n';
          str += '请求码: ' + ret.code + '\n';
          str += "是否勾选\"不再询问\"按钮: " + (ret.never ? '是' : '否') + '\n';
          str += '请求结果: \n';
          var list = ret.list;
          for (var i in list) {
            str += list.name + '=' + list.granted + '\n';
          }
          apialert(str);
          console.log(JSON.stringify(ret));
        })
      } else {
        api.requestPermission({
          list: ['photos', 'camera'],
          code: 100001
        }, function (ret, err) {
          var str = '请求结果:\n';
          str += '请求码: ' + ret.code + '\n';
          str += "是否勾选\"不再询问\"按钮: " + (ret.never ? '是' : '否') + '\n';
          str += '请求结果: \n';
          var list = ret.list;
          for (var i in list) {
            str += list.name + '=' + list.granted + '\n';
          }
          apialert(str);
          console.log(JSON.stringify(ret));
        })
        this.$refs.fileElem.dispatchEvent(new MouseEvent('click'))
      }
    }

我新安装打开进去这页面,一点加号这个,就是截图这样的
我明明写了有权限的时候也执行api.requestPermission这个方法

本帖子中包含更多资源,您需要 登录 才可以下载或查看,没有帐号?立即注册

X
您需要登录后才可以回帖 登录

本版积分规则