假设我只联系了电话号码和姓名。
现在我想更新联系人和ADD电子邮件信息。
我的所作所为 -
public void updateMail(String name, String mail) {
ContentResolver cr = mcontext.getContentResolver();
String where = ContactsContract.Data.DISPLAY_NAME + " = ? AND " +
ContactsContract.Data.MIMETYPE + " = ? AND " +
String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE) + " = ? ";
String[] params = new String[] {name,
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE,
String.valueOf(ContactsContract.CommonDataKinds.Email.TYPE_HOME)};
Cursor phoneCur =
mcontext.getContentResolver().query(ContactsContract.Data.CONTENT_URI,
null, where, params, null);
ArrayList<ContentProviderOperation> ops = new
ArrayList<ContentProviderOperation>();
if ( (null == phoneCur) ) {
//createContact(name, phone);
Log.e(TAG, "null == phoneCur");
} else {
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where, params)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, mail)
.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();
}
}
仅当我已联系电子邮件字段时才有效。 如果我没有 - 没有任何反应。 我该如何解决这个问题?
答案 0 :(得分:0)
if ((null == phoneCur))
,在此代码中,您已检查是否存在联系信息。如果是null (No contact)
,那么您错过了ops.add()
代码。
您要么删除此条件if ((null == phoneCur))
,要么在'if'块中添加'ops.add()'。