Android O收不到广播Intent.ACTION_NEW_OUTGOING_CALL

Android O can't receive broadcast Intent.ACTION_NEW_OUTGOING_CALL

在我的申请中,我可以收到 android.intent.action.PHONE_STATE 但无法在 android O 收到 Intent.ACTION_NEW_OUTGOING_CALL。如果我使用 android Nandroid M 一切正常。

我在 AndroidManifest 文件 中注册了第一个广播,在 前台服务 中注册了第二个广播,但是其中 none 个可以接收 Intent.ACTION_NEW_OUTGOING_CALL,只能收到android.intent.action.PHONE_STATE

如果有人知道如何修复它,请post您的回答,在此先感谢。

经过一些测试,我通过添加修复它:

ActivityCompat.requestPermissions(activity, Manifest.permission.PROCESS_OUTGOING_CALLS, requestCode)

但我仍然很困惑,因为我的 phone 没有要求我授予权限但工作正常。也许是 android O 的错误或功能?

But I am still confused, because my phone not ask me to give the permission but work fine. Maybe a bug or feature of android O ?

这是 Android O 的一个特征。

以前,当你请求权限组(PHONE)的权限(android.permission.READ_PHONE_STATE)并且用户授予它时,你可以使用任何权限(android.permission.PROCESS_OUTGOING_CALLS等) .) 该权限组 (PHONE) 自由(无需再次请求用户)。

现在从AndroidO开始,即使你的应用已经持有权限组(PHONE)的权限(android.permission.READ_PHONE_STATE),你也需要再次调用requestPermission对于同一组的其他权限(android.permission.PROCESS_OUTGOING_CALLS)。这不会提示用户授予权限(android.permission.PROCESS_OUTGOING_CALLS),如果您已经拥有同一权限组(PHONE)的另一个权限(android.permission.READ_PHONE_STATE),该权限将自动授予。