如何在没有READ_CALL_LOG权限的情况下在Android 9中获取来电和去电号码?

问题描述

我正在开发Call Recorder应用程序,在该应用程序中,我需要传入和传出电话的号码以在视图中显示记录详细信息。

在android 9之前运行良好,但在android 9之后,我们需要在运行时向用户请求两个权限READ_PHONE_STATEREAD_CALL_LOG

,以便brodcastReceiver将触发2次。第一次,我们将从intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)获取空值,而第二次,我们将获取数字。因此,我们通过检查intent.hasExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)

所以场景是当我们不使用READ_CALL_LOG时,我们将从intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)获取空值,这是android 9的问题

我试图使用此权限发布此应用,但由于该权限,该应用被Google Play Console拒绝。

可以通过填充Permission Declaration Form来发布此应用。但我不知道如何填写该表格,因此应用程序会被Google接受。

所以我的问题是未经READ_CALL_LOG许可如何获取号码。 TelephonyManager的替代方法?我试图找到一些替代方案,但我没有。我搜索了很多。

或者如果有人知道如何通过填充READ_CALL_LOG来获得Permission Declaration Form许可的应用程序发布,请告诉我。

TIA!

解决方法

Google只允许选择的几个用例获得CALL_LOG权限,而呼叫记录器用例不在该列表中。

更糟糕的是,在文档“ https://support.google.com/googleplay/android-developer/answer/9047303?hl=en”中的“无效使用”下明确提到了“呼叫记录器”

因此,除非您在Google Play之外发布应用,否则恐怕您无法获得该应用的电话号码。