有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android存在读取\调用\日志权限问题

Android 8.1,Java

我是新手,正在制作一个非常基本的重拨应用程序,我只需要拨打最后一个号码。为了得到那个号码,我使用getLastOutgoingCall,它需要READ_CALL_LOG权限。我这样要求:

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只会返回权限被拒绝,甚至不会提示输入权限。我如何才能正确地获得此权限,或者有更好的方法获得最后拨打的号码


共 (1) 个答案

  1. # 1 楼答案

    从READ_CALL_LOG上的文档中

    This is a hard restricted permission which cannot be held by an app until the installer on record whitelists the permission. For more details see 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。我认为你有理由这么做,但这将取决于谷歌员工对例外情况的突发奇想