i am working on the application which retrieve all the android contacts and also can delete and update contacts.everything working fine problem is when contact does not have email address then i can not update it using my application (can not add email address from my update contact page). i have written used code below. thanks in advance.
private void updateEmaill(String id, String email) {
ContentResolver cr = getContentResolver();
String where = ContactsContract.Data.RAW_CONTACT_ID + " = ? AND "
+ ContactsContract.Data.MIMETYPE + " = ?";
String[] params = new String[] { id,
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE };
Cursor phoneCur = managedQuery(ContactsContract.Data.CONTENT_URI, null,
where, params, null);
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
if ((null == phoneCur)) {
System.out.println("we have got null value from the cursor");
} else {
System.out.println("phone cursor count" + phoneCur.getCount());
ops.add(ContentProviderOperation
.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where, params)
.withValue(ContactsContract.CommonDataKinds.Email.ADDRESS,
email).build());
}
phoneCur.close();
try {
cr.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
newUpdate() has been known to work only if a given field exists already.
As a workaround, here’s one simple logic you can use: