Android动态权限设置

在项目中加入res/manifest.xml文件

注:为保证动态权限尽可能适配更多厂商的手机以及顺利上线Google Play,targetSdkVersion目前推荐设置为26.



    

 

html代码:其中参数和apicloud文档里面的一致




js代码:

//封装提示
function apialert(_msg, callback){
	api.alert({
	    title: '提示',
	    msg: _msg,
	}, function(ret, err) {
		if(callback){
			callback();
		}
	});
}
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){
        //    apialert('判断结果:' + JSON.stringify(rets));
           return;
       }
       return rets;
   }
//点击操作
function opWithPermission(perm){
      if(!confirmPer(perm)){
          return;
      }
      if('calendar' == perm){
          //操作日历
      }else if('camera' == perm){
          api.getPicture({
              sourceType: 'camera',
              mediaValue: 'pic',
              destinationType: 'url',
          }, function(ret, err) {
            //   if (ret) {
            //       apialert(JSON.stringify(ret));
            //   } else {
            //       apialert(JSON.stringify(err));
            //   }
          });
      }else if('contacts' == perm){
          api.openContacts({
              test: true
          }, function(ret, err) {
            //   if (ret && ret.status) {
            //       apialert(JSON.stringify(ret));
            //   } else {
            //       apialert(JSON.stringify(err));
            //   }
          });
      }else if('location' == perm){
          api.getLocation(function(ret, err) {
              if (ret && ret.status) {
                  apialert(JSON.stringify(ret));
              } else {
                  apialert(JSON.stringify(err));
              }
          });
      }else if('microphone' == perm){
          api.startRecord({
              path: 'fs://perm-test.amr'
          });
      }else if('phone' == perm){
          api.call({
              type: 'tel',
              number: '10086'
          });
      }else if('sensor' == perm){
          //操作身体传感器
      }else if('sms' == perm){
          api.sms({
              numbers: ['10086'],
              text: '余额',
              silent: true
          });
      }else if('storage' == perm){
          api.readFile({
              path:'fs://test.txt'
          }, function(ret, err) {
              if (ret.status) {
                  console.log('readFile: ' + ret.data);
              } else {
                  apialert(err.msg + ": \n" + api.fsDir);
              }
          });
      }
  }
  function confirmPer(perm){
     var has = hasPermission(perm);
     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;
 }

 

你可能感兴趣的:(APICloud)