Android O无法接收广播Intent.ACTION_NEW_OUTGOING_CALL

时间:2017-09-11 08:47:04

标签: android android-permissions android-8.0-oreo

在我的应用程序中,我可以收到android.intent.action.PHONE_STATE但无法在 android O 上收到Intent.ACTION_NEW_OUTGOING_CALL。如果我使用 android N android M ,一切正常。

我已在 AndroidManifest文件中注册了第一个广播,在前台服务中注册了第二个,但是没有一个能够接收Intent.ACTION_NEW_OUTGOING_CALL,只能接收android.intent.action.PHONE_STATE }。

如果有人知道如何修复它,请提前发表您的回答。

2 个答案:

答案 0 :(得分:7)

  

但我仍然感到困惑,因为我的手机没有要求我给予许可,但工作正常。也许是android O的bug或功能?

它是Android O的一项功能。

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

现在,从Android O开始,即使您的应用已拥有权限组(android.permission.READ_PHONE_STATE)的权限(PHONE),您也需要再次致电requestPermission以获得其他权限({{ 1}})同一组。这不会提示用户授予权限(android.permission.PROCESS_OUTGOING_CALLS),如果您已拥有相同权限组(android.permission.PROCESS_OUTGOING_CALLS)的其他权限(android.permission.READ_PHONE_STATE),则会自动授予权限。

答案 1 :(得分:3)

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

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

但我仍然感到困惑,因为我的手机没有要求我给予许可,但工作正常。也许是android O的bug或功能?