java - READ_CALL_LOG 权限的 Android 问题
问题描述
安卓 8.1,Java
我是新手,正在制作一个非常基本的重拨应用程序,我只需要拨打最后一个号码。为了获得该号码,我使用了需要 READ_CALL_LOG 权限的 getLastOutgoingCall。我这样要求:
if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_CALL_LOG}, 100);
}
如果我请求其他权限(如 READ_CONTACT),则此方法有效,但由于某种原因,读取调用日志仅返回权限被拒绝,甚至没有提示权限。我怎样才能正确获得此权限,或者是否有更好的方法来拨打最后一个号码?
解决方案
来自 READ_CALL_LOG 的文档
这是一个硬限制权限,在记录上的安装程序将该权限列入白名单之前,应用程序不能持有该权限。有关更多详细信息,请参阅 PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions(Set)。
听起来您的设备已设置为硬阻止该权限。
此外,您的应用不太可能在 Google Play 上获得许可。有关限制,请参阅https://support.google.com/googleplay/android-developer/answer/10208820?hl=en#zippy=%2Cpermitted-uses-of-the-sms-and-call-log-permissions%2Cexceptions在那个许可上。我认为您对此有一个论据,但这将取决于 Google 人员查看例外情况的心血来潮。
推荐阅读
- postgresql - 有条件的 ROW NUMBER 或 COMBINE GROUP BY
- php - 如果在满足条件的情况下在条件语句中调用 return,则函数返回 null。返回条件之外的期望值
- python-3.x - discord.py - Assistance with Count-Down Command
- excel - 如何在 .NET Excel 插件中向 VBA 公开自动生成的 Web 引用类
- android - MP Android 未显示 X 轴值
- java - eclipse java文件显示问号,导致找不到或加载主类
- c - 动态链接 C 驱动程序后未定义的符号
- odoo - Odoo 8 - 批量编辑和字段域
- python - 将 DataFrame 乘以不同形状的 DataFrame(或系列)
- node.js - 自适应卡片 - selectAction 不适用于 iOS 设备 Node.js 上的 MS Teams 应用程序