【问题标题】:Why do I need the permission READ_CONTACTS to read the call log?为什么我需要 READ_CONTACTS 权限才能读取通话记录?
【发布时间】:2023-03-28 09:59:01
【问题描述】:

应用正在读取通话记录。在大多数设备上都很好,其他一些设备会得到SecurityException 用于READ_CONTACTS(我没有也不想在我的AndroidManifest.xml 中使用它。

为什么会这样,我可以对此做些什么吗?也许通过投影,获取CACHED_NAME

【问题讨论】:

    标签: android android-securityexception


    【解决方案1】:

    android.permission.READ_CALL_LOG 是在 API 级别 16 中引入的。在此之前,它隐含在 android.permission.READ_CONTACTS 中,并且不作为单独的权限存在。我怀疑您的问题出在 API 15 及更低版本的设备上,因为它们会忽略您的清单的 uses-permissionREAD_CALL_LOG,因此无权读取日志。对于这些设备,READ_CONTACTS 是正确的权限。

    【讨论】:

    • 所以,我使用<uses-permission android:name="android.permission.READ_CONTACTS" android:maxSdkVersion="15" /> 来避免在较新的 API 中请求此权限。
    • 刚刚尝试使用此权限和 maxSdkVersion="15" 上传我的 APK,控制台告诉我最小 maxSdkVersion 应该是 18!?
    • 设置 maxSdkVersion 是一种不好的做法。有人更新了他们的手机,而您的应用程序不再运行,只是因为您没有按照应有的方式实现内容。
    • @Paul Ratazzi 如果我想看电话簿但不想看通话记录,我该怎么办?
    • @dragonfly 如果您使用的是 API 16 或更高版本(我希望此时如此),只需在清单中声明 READ_CONTACTS 权限。 READ_CALL_LOGS 是一个单独的权限。
    猜你喜欢
    • 1970-01-01
    • 2014-07-22
    • 2011-07-15
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多