android 8.0后无法接收“NEW_OUTGOING_CALL”解决办法

因为android8.0后对广播进行了很多限制,一直没有搞懂为什么接收不到用户拨打电话时候的广播,尝试了网上很多的办法,后来看了这篇博客

https://blog.csdn.net/dfghhvbafbga/article/details/80223938
这里面有写到那些广播还可以直接在清单文件注册,但是我发现还是接收不到广播 ,后来怀疑是不是权限的问题,因为清单文件的权限添加被划掉了,而且6.0之后就需要动态添加权限
在这里插入图片描述

添加NEW_OUTGOING_CALL权限

    if (ContextCompat.checkSelfPermission(this,  Manifest.permission.PROCESS_OUTGOING_CALLS) == PackageManager.PERMISSION_GRANTED) {//已有权限
        } else {//申请权限
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.PROCESS_OUTGOING_CALLS}, 1);
        }

接收到onReceive打印的log
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想要使用`PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALL`来拨打紧急电话,可以使用以下代码: ```java String emergencyNumber = "911"; // 紧急电话号码 // 获取TelecomManager实例 TelecomManager telecomManager = (TelecomManager) getSystemService(Context.TELECOM_SERVICE); // 获取当前默认的电话账号 PhoneAccountHandle defaultPhoneAccount = telecomManager.getDefaultOutgoingPhoneAccount("tel"); if (defaultPhoneAccount != null) { Bundle extras = new Bundle(); extras.putBoolean(TelecomManager.EXTRA_PLACE_EMERGENCY_CALL, true); // 创建一个拨打紧急电话的Intent Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + emergencyNumber), this, MyConnectionService.class); intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, defaultPhoneAccount); intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras); // 开始拨打紧急电话 telecomManager.placeCall(intent.getData(), intent.getExtras()); } ``` 上述代码中,我们首先获取了`TelecomManager`实例,并使用`getDefaultOutgoingPhoneAccount("tel")`方法获取当前默认的电话账号。然后,我们创建一个拨打紧急电话的`Intent`,并将紧急电话号码作为Uri的一部分。我们还通过`putExtra()`方法将`PhoneAccountHandle`和一个具有`TelecomManager.EXTRA_PLACE_EMERGENCY_CALL`标志的`Bundle`传递给`Intent`。 最后,我们使用`telecomManager.placeCall()`方法来拨打紧急电话。这个方法会将拨打紧急电话的请求发送给系统的电话服务,并由电话服务处理拨打紧急电话的过程。 请注意,为了使用`PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALL`,你需要在AndroidManifest.xml文件中声明一个电话服务,并将其与`MyConnectionService.class`(示例中的类名)关联起来。还要确保你的应用程序具有相应的权限,例如`CALL_PHONE`和`READ_PHONE_STATE`。 这是一个复杂的操作,需要谨慎处理。在实际应用中,请确保你对涉及紧急电话的操作进行适当的测试和安全性考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值