在项目中加入res/manifest.xml文件
注:为保证动态权限尽可能适配更多厂商的手机以及顺利上线Google Play,targetSdkVersion目前推荐设置为26.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<application name="targetSdkVersion" value="26"/>
</manifest>
html代码:其中参数和apicloud文档里面的一致
<button onclick="opWithPermission('camera')">
扫一扫
</button>
<button onclick="opWithPermission('contacts')">
通讯录
</button>
<button onclick="opWithPermission('location')">
定位
</button>
<button onclick="opWithPermission('microphone')">
录音
</button>
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;
}