android - 如何在没有 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
请告诉我。
蒂亚!
解决方案
Google 只允许选定的少数用例获得 CALL_LOG 权限,而通话记录器用例不在该列表中。
更糟糕的是,在文档中的“无效用途”下明确提到了“通话记录器”:https: //support.google.com/googleplay/android-developer/answer/9047303?hl=en
因此,除非您在 Google Play 之外发布您的应用程序,否则恐怕您无法获取您的应用程序的电话号码。
推荐阅读
- python - 使用移位函数与前一行值进行比较时出现问题
- c++ - Mojave 问题:获取“异常崩溃:窗口已被标记为在窗口通道中需要另一个更新结构区域......”
- logical-operators - python ~ 逻辑运算符不返回索引
- sql - SQL“子查询返回多行用作表达式”计数子查询错误
- python - While循环在必须停止时不会停止
- javascript - 自定义光滑箭头
- firebase - Flutter Firebase:状态不佳:快照既没有数据也没有错误
- java - JVM 11 GC 日志轮换:使用选项“(null)”初始化输出“file=/var/log/cassandra/gc.log”失败
- r - Prophet:错误:目前不支持法国的假期
- spring-boot - Spring Boot Initializer 可能缺少注释