2

特定の電話とキャリアでこの例外が発生しています: Verizon の Samsung Galaxy S3。Sprint を使用した Evo と AT&T を使用した Galaxy Nexus でテストしましたが、このエラーは発生しません。電話会社が、追加の特別なアクセス許可を必要とする OS に変更を加えたのではないかと考えています。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>
4

1 に答える 1

2

アプリケーションがユーザーの通話履歴を読み取ることを許可します。

注: アプリが 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"

ソース: Manifest.permissions #READ_CALL_LOG

于 2013-02-05T14:21:42.420 に答える