Sto tentando di inserire e aggiornare un'informazione su un contatto esistente, quindi ho creato un'applicazione di esempio per sviluppare la funzionalità. Tutto quello che voglio è la mia app di esempio da inserire (o se presente) aggiornare un indirizzo email su un contatto.Modifica informazioni di contatto
che sto selezionando un contatto attraverso il sistema di intenti in questo modo:
startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST);
L'URI che viene restituito è quello del Contact
che è stato selezionato ed è disponibile in questa forma (RawContact
?): content://com.android.contacts/contacts/lookup/0r2-2A90214945/2
.
posso tirare indietro tutti gli elementi Data
(RawContact
?) Su questo eseguendo il seguente codice:
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();
}
Da questo dovrei essere in grado di determinare se il contatto ha già un membro CommonDataTypes.EmailData
:
cursor.getColumnIndex(CommonDataKinds.Email.CONTENT_ITEM_TYPE) != -1;
e quindi eseguire una delle seguenti a uno o Insert
Update
il 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);
Ma questo mi dà un'eccezione: java.lang.UnsupportedOperationException: URI: content://com.android.contacts/contacts/lookup/0r2-2A90314945/2, calling user:
Speriamo che qualcuno può vedere quello che ho perso.
PS, sto usando queste autorizzazioni:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
ok, lo rimuoverò. grazie –