将联系人姓名添加到Android

时间:2014-04-11 12:36:58

标签: android contact

我使用以下代码:

ArrayList<ContentValues> data = new ArrayList<ContentValues>();

      ContentValues name = new ContentValues();
      name.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
      name.put(StructuredName.GIVEN_NAME, "first name");
      name.put(StructuredName.FAMILY_NAME, "last name");
      data.add(name);

      ContentValues row2 = new ContentValues();
      row2.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
      row2.put(Email.TYPE, Email.TYPE_CUSTOM);
      row2.put(Email.LABEL, "Green Bot");
      row2.put(Email.ADDRESS, "android@android.com");
      data.add(row2);

      Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
      intent.putParcelableArrayListExtra(Insert.DATA, data);

      startActivity(intent);

但是,只添加了电子邮件。名称字段设置为空。

更新 地址也一样!

ContentValues address = new ContentValues();
      address.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
      address.put(StructuredPostal.CITY, "Nasr City");
      address.put(StructuredPostal.COUNTRY, "Egypt");
      address.put(StructuredPostal.REGION, "Cairo");
      address.put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK);
      data.add(address);

电子邮件,电话号码,网站,即时消息和照片都可以正常使用。

2 个答案:

答案 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());

    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)
            .withValue(
                    ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
                    FirstName)
            .withValue(
                    ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,
                    LastName).build());

    try {
        ContentProviderResult[] personid = getContentResolver().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)

最后我在意图

中添加了额外的额外内容
Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
intent.putParcelableArrayListExtra(Insert.DATA, data);
intent.putExtra(Intents.Insert.POSTAL, "addrees");
intent.putExtra(Intents.Insert.NAME, "name");
startActivity(intent);
它对我有用。仅用于添加名称,但我无法添加名字,姓氏等。

相关问题