Tôi đang cố chèn và cập nhật một mẩu thông tin trên một số liên lạc hiện có do đó tôi đã tạo một ứng dụng mẫu để phát triển chức năng. Tất cả những gì tôi muốn ứng dụng mẫu của tôi làm là chèn (hoặc nếu có) cập nhật địa chỉ email trên một số liên lạc.Sửa đổi thông tin liên lạc
Tôi chọn một số liên lạc thông qua tiếp cận mục đích hệ thống như vậy:
startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST);
URI mà được trả về là của Contact
mà đã được lựa chọn và đi kèm theo hình thức này (RawContact
?): content://com.android.contacts/contacts/lookup/0r2-2A90214945/2
.
tôi có thể kéo lại tất cả các mục Data
(RawContact
?) Về vấn đề này bằng cách thực hiện đoạn mã sau:
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();
}
Từ này tôi sẽ có thể xác định nếu tiếp xúc đã có một thành viên CommonDataTypes.EmailData
:
cursor.getColumnIndex(CommonDataKinds.Email.CONTENT_ITEM_TYPE) != -1;
Và sau đó thực hiện một trong các cách sau để một trong hai Insert
hoặc Update
các 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);
Nhưng điều này mang lại cho tôi một ngoại lệ: java.lang.UnsupportedOperationException: URI: content://com.android.contacts/contacts/lookup/0r2-2A90314945/2, calling user:
Hy vọng rằng ai đó có thể nhìn thấy những gì tôi đã bỏ qua.
PS, Tôi đang sử dụng các điều khoản:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
ok, tôi sẽ xóa nó. cảm ơn –