我在特定手机和运营商上遇到此异常:Verizon 的 Samsung 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>
允许应用程序读取用户的通话记录。
注意:如果您的应用程序使用 READ_CONTACTS 权限,并且您的 minSdkVersion 和 targetSdkVersion 值均设置为 15 或更低,则系统会隐式授予您的应用程序此权限。如果您不需要此权限,请确保您的 targetSdkVersion 为 16 或更高。
常量值:“android.permission.READ_CALL_LOG”
根据你的清单:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="9"></uses-sdk>
也许你应该尝试删除READ_CONTACTS
权限,或设置targetSdkVersion="9"
Source: 清单.权限#READ_CALL_LOG http://developer.android.com/reference/android/Manifest.permission.html#READ_CALL_LOG
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)