在我的应用程序中,我可以收到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
}。
如果有人知道如何修复它,请提前发表您的回答。
答案 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或功能?