大家好,刚刚碰到一个问题,请教一下大家。我使用的sdk版本是1.5.Logcat日志如下 :03-05 15:48:37.200: E/AndroidRuntime(18257): FATAL EXCEPTION: Thread-10
03-05 15:48:37.200: E/AndroidRuntime(18257): java.lang.SecurityException: Permission Denial: writing com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data from pid=18257, uid=10042 requires android.permission.WRITE_CONTACTS
03-05 15:48:37.200: E/AndroidRuntime(18257):  at android.os.Parcel.readException(Parcel.java:1322)
03-05 15:48:37.200: E/AndroidRuntime(18257):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
03-05 15:48:37.200: E/AndroidRuntime(18257):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
03-05 15:48:37.200: E/AndroidRuntime(18257):  at android.content.ContentProviderProxy.insert(ContentProviderNative.java:408)
03-05 15:48:37.200: E/AndroidRuntime(18257):  at android.content.ContentResolver.insert(ContentResolver.java:618)
android 配置文件 :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.rysf.fun"
    android:versionCode="1"
    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="3" />
    <user-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application></manifest>程序源代码 :
public void setPhotoData(Context mContext, byte[] data, long personId) {
ContentValues values = new ContentValues();
Uri mUri = Uri.parse("content://com.android.contacts/data");
String sWhere = "raw_contact_id = " + personId + " AND mimetype ='vnd.android.cursor.item/photo'";
int photoRow = -1;
ContentResolver c = mContext.getContentResolver();

Cursor mCursor = c.query(mUri, null, sWhere, null, null);
if(null != mCursor) {
if (mCursor.moveToFirst()) {
int idIdx = mCursor.getColumnIndexOrThrow("_id");
photoRow = mCursor.getInt(idIdx);
}
}
mCursor.close();
mCursor = null;

values.put("raw_contact_id", personId);
values.put("is_super_primary", 1);
values.put("data15", data);
values.put("mimetype", "vnd.android.cursor.item/photo");
if (photoRow >= 0) {
c.update(mUri, values, " _id= " + photoRow, null);
} else {
c.insert(mUri, values);

}