首页 > 解决方案 > 如何在没有 READ_CALL_LOG 权限的情况下在 Android 9 中获取来电和去电号码?

问题描述

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

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

所以这brodcastReceiver将触发2次。第一次我们会得到null,intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)第二次我们会得到数字。所以我们通过检查来处理它intent.hasExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)

所以场景是当我们不使用时,我们会从这个问题中READ_CALL_LOG得到 nullintent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)android 9

我尝试使用此权限发布此应用程序,但由于此权限,应用程序被拒绝Google Play Console

这个应用程序可以通过填充释放Permission Declaration Form。但我不知道如何填写该表格,以便应用程序被谷歌接受。

所以我的问题是如何在没有READ_CALL_LOG许可的情况下获取号码。的任何选择TelephonyManager?我试图获得一些替代品,但我没有得到。我搜索了很多。

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

蒂亚!

标签: androidandroid-studiogoogle-playgoogle-play-consoletelephonymanager

解决方案


Google 只允许选定的少数用例获得 CALL_LOG 权限,而通话记录器用例不在该列表中。

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

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


推荐阅读