我試圖插入並更新現有聯繫人上的一條信息,因此我創建了示例應用程序以開發功能。我想讓我的示例應用程序執行的操作是插入(或者如果存在)更新聯繫人的電子郵件地址。修改聯繫人信息
我選擇通過該系統意圖的接觸像這樣:
startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST);
的URI被返回是,Contact
的哪個被選擇並附帶以這種形式(RawContact
): content://com.android.contacts/contacts/lookup/0r2-2A90214945/2
。
我可以通過執行以下代碼拉回來所有的Data
(RawContact
?)項目在此:
Cursor cursor = contentResolver.query(mContactUri, null, null, null, null);
try {
if (cursor.moveToFirst()) {
for(int i=0; i < cursor.getColumnCount(); i++) {
String message = cursor.getColumnName(i);
Log.v("", message);
}
}
} finally {
cursor.close();
}
從這個我應該能夠確定是否接觸已經有一個CommonDataTypes.EmailData
成員:
cursor.getColumnIndex(CommonDataKinds.Email.CONTENT_ITEM_TYPE) != -1;
,然後執行下列步驟,Insert
或Update
的Data之一:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(mContactUri)
.withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE)
.withValue(Email.DISPLAY_NAME, "[email protected]")
.withValue(Email.TYPE, Email.TYPE_HOME)
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
但是這給了我一個例外: java.lang.UnsupportedOperationException: URI: content://com.android.contacts/contacts/lookup/0r2-2A90314945/2, calling user:
希望有人可以看到我已經錯過了。
PS,我使用這些權限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
好的,我會刪除它。謝謝 – 2012-01-10 11:49:32