【问题标题】:Permission Denial: reading com.android.providers.contacts.CallLogProvider权限拒绝:读取 com.android.providers.contacts.CallLogProvider
【发布时间】:2013-02-05 14:05:49
【问题描述】:

我在特定手机和运营商上遇到此异常:Verizon 上的三星 Galaxy S3。我已经在 Sprint 的 Evo 和 AT&T 的 Galaxy Nexus 中进行了测试,但没有一个给我这个错误。我想知道电话运营商是否对现在需要额外特殊权限的操作系统进行了任何修改。我从一位拥有 Galaxy S3 的客户那里远程记录了以下堆栈跟踪:

堆栈跟踪:

    Permission Denial: reading com.android.providers.contacts.CallLogProvider 
uri content://call_log/calls from pid=23104, uid=10233 
requires android.permission.READ_CALL_LOG, or grantUriPermission()
java.lang.SecurityException: Permission Denial: reading 
com.android.providers.contacts.CallLogProvider 
uri content://call_log/calls from pid=23104, uid=10233 
requires android.permission.READ_CALL_LOG, or grantUriPermission()  
at android.os.Parcel.readException(Parcel.java:1430)  at 
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)  at 
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)  at 
android.content.ContentProviderProxy.query(ContentProviderNative.java:423)  at 
android.content.ContentResolver.query(ContentResolver.java:375)  at 
android.content.ContentResolver.query(ContentResolver.java:318)

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xyz"
    android:installLocation="auto"
    android:versionCode="1"
    android:versionName="1" >

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />    
    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="9">
    </uses-sdk>

【问题讨论】:

    标签: android exception permissions


    【解决方案1】:

    允许应用程序读取用户的通话记录。

    注意:如果您的应用使用 READ_CONTACTS 权限,并且您的 minSdkVersion 和 targetSdkVersion 值都设置为 15 或更低,则系统会隐式授予您的应用此权限。如果您不需要此权限,请确保您的 targetSdkVersion 为 16 或更高版本。

    常量值:“android.permission.READ_CALL_LOG”

    根据您的清单:
    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="9"&gt;&lt;/uses-sdk&gt;

    也许您应该尝试删除READ_CONTACTS 权限,或设置targetSdkVersion="9"

    来源:Manifest.permissions #READ_CALL_LOG

    【讨论】:

    • 没有什么像 android.permission.READ_CALL_LOG
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2016-12-18
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多