将ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL设置为自定义值

时间:2014-06-23 13:51:40

标签: android contactscontract

我打算将联系人添加到设备,如下所示:

                    Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
                    intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
                    intent.putExtra(ContactsContract.Intents.Insert.NAME,
                            user.getName());
                    intent.putExtra(ContactsContract.Intents.Insert.IM_HANDLE,
                            user.getID());
                    intent.putExtra(
                            ContactsContract.Intents.Insert.IM_PROTOCOL,
                            ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM);
                    startActivityForResult(intent, 0);

documentation说:

  

public static final String PROTOCOL
    应填充此列   使用一个定义的常数,例如, PROTOCOL_YAHOO。如果值   此列的列是PROTOCOL_CUSTOM,CUSTOM_PROTOCOL应该包含   自定义协议的名称。常数值:“data5”。

当我点击添加或编辑联系人时,弹出的对话框显示为空的edittext,我必须选择 CUSTOM_PROTOCOL 的名称。根据文档,我无法找到如何设置 CUSTOM_PROTOCOL 值的方法。

1 个答案:

答案 0 :(得分:0)

您可以通过这种方式添加自定义协议。

Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, user.getName());

ArrayList<ContentValues> data = new ArrayList<ContentValues>();
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Im.DATA, user.getID());
values.put(ContactsContract.CommonDataKinds.Im.PROTOCOL, ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM);
values.put(ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL, "your_protocol");
data.add(values);
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, data);

startActivityForResult(intent, 0);