1

私はすべてのAndroidの連絡先を取得し、連絡先を削除および更新できるアプリケーションに取り組んでいます。連絡先に電子メールアドレスがない場合、アプリケーションを使用して更新できません(更新から電子メールアドレスを追加できません)お問い合わせページ)。以下に中古コードを書きました。前もって感謝します。

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();
    }

}
4

1 に答える 1

0

newUpdate() は、指定されたフィールドが既に存在する場合にのみ機能することが知られています。

回避策として、使用できる簡単なロジックを次に示します。

  -check if email exists for contacts
  -if it does call update
  -if it doesn't save all the fields of this contact in some variables and delete the  contact
  -use newInsert() to create a new contact with the saved fields from old contact and also the email that you need to add.
于 2012-10-09T05:26:07.663 に答える