以编程方式更新android联系人的电子邮件

时间:2014-11-12 11:19:06

标签: java android

假设我只联系了电话号码和姓名。

现在我想更新联系人和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();
        }
    }

仅当我已联系电子邮件字段时才有效。 如果我没有 - 没有任何反应。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

if ((null == phoneCur)),在此代码中,您已检查是否存在联系信息。如果是null (No contact),那么您错过了ops.add()代码。

您要么删除此条件if ((null == phoneCur)),要么在'if'块中添加'ops.add()'。