and*_*dev 6 android phone-state-listener android-9.0-pie
我试图通过onrecieve()方法从清单文件中注册的以下广播接收器中获取意图额外的电话号码.
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
我可以成功读取所有版本的电话号码,除了在我的像素2设备中升级的android饼干.根据文档,应用程序需要额外的权限来读取READ_CALL_LOG权限和READ_PHONE_STATE权限的电话号码,但即使在允许这些权限后,我仍然会失去READ_CALL_LOG的权限,因此我无法读取电话号码.请帮我解决这个问题.
小智 12
确保在Android 6.0+中在运行时授予READ_PHONE_STATE和READ_CALL_LOG权限:https:
//developer.android.com/distribute/best-practices/develop/runtime-permissions
另请注意,在授予这两个权限后,您将收到两次ACTION_PHONE_STATE_CHANGED广播意图操作; 一个EXTRA_INCOMING_NUMBER填充了电话号码,另一个填充了空白.
您可以在此处找到更多信息:https:
//developer.android.com/reference/android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED
根据文档,广播中给出的电话号码需要额外的权限。因为这就像无需请求即可访问通话记录信息。
对电话号码的限制访问 除了您的应用用例所需的其他权限之外,在 Android 9 上运行的应用程序在未首先获取 READ_CALL_LOG 权限的情况下无法读取电话号码或手机状态。
与传入和传出呼叫关联的电话号码在电话状态广播中可见,例如传入和传出呼叫的电话号码,并且可从 PhoneStateListener 类访问。但是,如果没有 READ_CALL_LOG 权限,则 PHONE_STATE_CHANGED 广播中和通过 PhoneStateListener 提供的电话号码字段为空。
要从手机状态读取电话号码,请更新您的应用程序以根据您的用例请求必要的权限:
要从 PHONE_STATE Intent 操作读取号码,您需要 READ_CALL_LOG 权限和 READ_PHONE_STATE 权限。要从 onCallStateChanged() 读取号码,您只需要 READ_CALL_LOG 权限。您不需要 READ_PHONE_STATE 权限。
附:请测试一下。在我的广播接收器中,我现在需要一个像这样的可怕的块:
if(Build.VERSION.SDK_INT >= 26 && intent!=null && intent.getExtras() !=null
&& TextUtils.isEmpty(intent.getExtras().getString("incoming_number"))){
return;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
随着新的 Google Play 权限更改(即 2019 年 1 月 9 日发布和 Android Pie),上述任何一项都不再有效。您的应用程序将在本地运行,或者如果用户手动下载 APK,但您无法再将应用程序更新到 Play 商店。这是来自 Google Play 的电子邮件的一部分。“您好 Kishor Bapat9 的开发人员,感谢您就您的应用 Ekalipi 呼叫播音员 (ECA),com.ked.ekalipi.tts 与 Google Play 团队联系。
发布状态:已拒绝 审核后,您的应用已被拒绝,未发布违反政策。如果您提交更新,则您的应用的先前版本仍可在 Google Play 上使用。问题:违反权限政策在审核您的应用后,我们发现它没有资格使用请求的权限以下原因:
发布状态
根据我们的审核,我们发现您的应用表达的用户体验与您声明的核心功能{来电显示、垃圾邮件检测和/或垃圾邮件拦截}不符。请从您的应用中删除这些权限。”
注意 - 我们没有特别要求这些权限。我们甚至尝试以不同的方式更改描述。CATCH 22 - 如果您指定 CALL_LOG 权限,Google Play 将拒绝您的应用。如果您取消该权限,您将无法获得来电号码。
| 归档时间: |
|
| 查看次数: |
4065 次 |
| 最近记录: |