Android - 在手机中创建联系人

时间:2016-04-29 14:37:57

标签: java android

大家好我需要帮助才能理解我没有使用它的代码,因为我不明白它也许你们可以帮助我这样做。

private void createContact(String name, String phone) {
    ContentResolver cr = getContentResolver();

    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);

    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String existName = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            if (existName.contains(name)) {
                AlertDialog.Builder dialogBuilder=new AlertDialog.Builder(add_cli.this);
                dialogBuilder.setMessage("Um contacto com este nome já existe.");
                dialogBuilder.setPositiveButton("Ok", null);
                dialogBuilder.show();
                return;
            }
        }
    }

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "accountname@gmail.com")
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "com.google")
            .build());
    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(ContactsContract.Data.MIMETYPE,
                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
            .build());
    ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(ContactsContract.Data.MIMETYPE,
                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME)
            .build());


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

    Toast.makeText(getApplicationContext(), "Contacto criado de seguida será adicionado como um dos seus clientes.", Toast.LENGTH_SHORT).show();

}

我理解第一部分当我们搜索是否有任何与该名称的联系时,我们在创建一个arraylist时我不明白它的下一部分。有一个帐户类型和谷歌的帐户名称,当我下载代码时,这已经是这样的。是联系姓名和联系电子邮件,有手机号码,但家庭电话号码的方法?如果我不解释自己目前说我的英语不是很好,但我现在试着表达。

--- ---- EDITED

我需要填写这些营地以及这些营地是什么?

ContactsContract.RawContacts.ACCOUNT_TYPE
ContactsContract.RawContacts.ACCOUNT_NAME
ContactsContract.Data.RAW_CONTACT_ID

1 个答案:

答案 0 :(得分:0)

我已经设置了这部分代码。

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
        .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
        .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
        .build());