uniapp 安卓一键拨号流程

🎈插件市场组件地址🎈

序言

由于个人项目需求,需要直接在app中拨号给对应手机号的用户,所以查询资料封装了该组件

配置

// 首先打开manifest.json文件勾选
<uses-permission android:name=\"android.permission.READ_CALL_LOG\"/>
<uses-permission android:name=\"android.permission.WRITE_CALL_LOG\"/>

技术点

plus.android.requestPermissions(Array[String] permissions, AndroidSuccessCallback successCb, AndroidErrorCallback errorCB);

说明:

向系统请求权限,Android系统6+版本(API等级23+),并且必须设置targetSdkVersion>=23,参考:https://ask.dcloud.net.cn/article/193。 如果权限属于危险权限并且用户没有授权则会弹出系统提示框由用户授权确认,如果已经授权或被用户拒绝则返回结果。 授权结果在successCb回调参数中可获取。

参数:

参数类型说明
permissionsArray申请的权限列表
successCbfunction申请权限成功回调函数
errorCBfunction申请权限失败回调函数

successCb说明

返回值类型说明
grantedArray已获取权限列表
deniedPresentArray已拒绝(临时)的权限列表
deniedAlwaysArray永久拒绝的权限列表

代码

// 首先判断该用户是否授权了直接拨号的权限
plus.android.requestPermissions(["android.permission.CALL_PHONE"], (resultObj) => {
        let result = 0;
        // 获取已授权的的列表,如["android.permission.CALL_PHONE"]已获得权限,该列表中就会出现
    for (let i = 0, len = resultObj.granted.length; i < len; i++) {
        let grantedPermission = resultObj.granted[i];
        result = 1
    }
        // 获取本次拒绝授权的权限列表
        for (let i = 0, len = resultObj.deniedPresent.length; i < len; i++) {
        let deniedPresentPermission = resultObj.deniedPresent[i];
        console.log('拒绝本次申请的权限:' + deniedPresentPermission);
        result = 0
    }
        // 获取永久拒绝授权的权限列表
    for (let i = 0, len = resultObj.deniedAlways.length; i < len; i++) {
        let deniedAlwaysPermission = resultObj.deniedAlways[i];
        console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
        result = -1
    }
        if (result === 1) {
        // 导入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:" + this.telephone);//这里可修改电话号码
        let call = new Intent("android.intent.action.CALL",uri);
        // 调用startActivity方法拨打电话
                // telephone 需要拨号的手机号
        plus.device.dial(telephone, false);
                // false改为true时,需用户确认后再进行拨打
        main.startActivity(call);
    }
}, (errorCb) => {
console.log('申请权限错误:' + error.code + " = " + error.message);
})

发表评论

电子邮件地址不会被公开。 必填项已用*标注