uni-ap拨打电话、权限检测及电话状态监听

plus.android.requestPermissions(['android.permission.CALL_PHONE'], function(e){
// console.log(e)
if(e.deniedAlways.length>0){ //权限被永久拒绝
let Uri = plus.android.importClass("android.net.Uri");
let Settings = plus.android.importClass("android.provider.Settings");
let context = plus.android.runtimeMainActivity();

let packageURI = Uri.parse("package:" + 'com.ttlth.platform');
let intent = plus.android.newObject("android.content.Intent", Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
context.startActivity(intent);
console.log('Always Denied!!! '+e.deniedAlways.toString());
}
if(e.deniedPresent.length>0){ //权限被临时拒绝
// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限
console.log('Present Denied!!! '+e.deniedPresent.toString());
}
if(e.granted.length>0){ //权限被允许
//调用依赖获取定位权限的代码
// 导入Activity、Intent类
let Intent = plus.android.importClass("android.content.Intent");
let Uri = plus.android.importClass("android.net.Uri");
// 获取主Activity对象的实例
let main = plus.android.runtimeMainActivity();
// 创建Intent
let uri = Uri.parse("tel:"+phonex); // 这里可修改电话号码
let call = new Intent("android.intent.action.CALL",uri);
// 调用startActivity方法拨打电话
main.startActivity( call );
console.log('Granted!!! '+e.granted.toString());
}

let maintest = plus.android.runtimeMainActivity();
let Contexttest = plus.android.importClass("android.content.Context");
let telephonyManager = plus.android.importClass("android.telephony.TelephonyManager");
let telManager=plus.android.runtimeMainActivity().getSystemService(Contexttest.TELEPHONY_SERVICE);
let receiver=plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function(Contexttest, intent) {
plus.android.importClass(intent);
console.log(intent.getAction());
// let telephonyManager = plus.android.importClass("android.telephony.TelephonyManager");
// let telephonyManager=plus.android.runtimeMainActivity().getSystemService(Contexttest.TELEPHONY_SERVICE);
let phonetype=telManager.getCallState();
let phoneNumber = intent.getStringExtra(telephonyManager.EXTRA_INCOMING_NUMBER);
console.log("phonetype:"+phonetype); //电话状态 0->空闲状态 1->振铃状态 2->通话存在
console.log(); //电话号
switch (phonetype) {
case 0:
_this.getCallLog();
console.log('aaa')
break;
case 1:
console.log('bbb')
break;
case 2:
console.log('ccc')
break;
}

// _t.state.push({state:phonetype == 0?'空闲状态':phonetype == 1?'振铃状态':'通话存在', time:dateFormat('hh:mm:ss')})
}
});
let IntentFilter = plus.android.importClass('android.content.IntentFilter');
let filter = new IntentFilter();
filter.addAction(telephonyManager.ACTION_PHONE_STATE_CHANGED);
maintest.registerReceiver(receiver, filter);

}, function(e){
console.log('Request Permissions error:'+JSON.stringify(e));
});

posted @ 2020-11-26 10:18  前端海  阅读(4492)  评论(1编辑  收藏  举报