uni-app uni.makePhoneCall 不授权 但是不走fail

uni-app uni.makePhoneCall 不授权 但是不走fail

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC版本号 13.0.1
HBuilderX 正式
HBuilderX版本 3.8.12
手机系统 全部
手机厂商 华为
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

测试过的手机:

华为 mate20pro

操作步骤:

  • 弹框的时候 不授权

预期结果:

  • 能走fail

实际结果:

  • 不走fail

bug描述:

  • uni.makePhoneCall 不授权 但是不走fail 还是报ok

更多关于uni-app uni.makePhoneCall 不授权 但是不走fail的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

fail Function 否 是接口调用失败的回调函数,不是取消授权的回调 https://ext.dcloud.net.cn/plugin?id=594 ,可以在页面onShow判断 android.permission.CALL_PHONE 权限

更多关于uni-app uni.makePhoneCall 不授权 但是不走fail的实战教程也可以访问 https://www.itying.com/category-93-b0.html


chooseImage 授权失败 会走fail 会报没有权限 还以为他们是相似的

关于uni.makePhoneCall在不授权时未触发fail回调的问题,这可能是由于Android系统权限处理机制导致的。以下是关键点分析:

  1. 权限检查机制:
  • Android 6.0+采用运行时权限,但电话权限(READ_PHONE_STATE)属于危险权限
  • 实际拨打电话需要CALL_PHONE权限,但uni-app可能未正确处理权限拒绝场景
  1. 可能原因:
  • 部分厂商系统会默认允许基础电话功能
  • 权限拒绝后系统仍返回成功状态码
  • fail回调仅在明确拒绝时触发,而系统可能返回模糊状态
  1. 建议解决方案:
uni.getSystemInfo({
  success(res) {
    if(res.platform === 'android') {
      uni.authorize({
        scope: 'scope.phone',
        success() {
          uni.makePhoneCall({ phoneNumber: '10086' })
        },
        fail() {
          console.log('权限被拒绝')
        }
      })
    } else {
      uni.makePhoneCall({ phoneNumber: '10086' })
    }
  }
})
回到顶部