如何在Android 1.6中的现有联系人中插入联系信息?

时间:2010-06-15 13:16:20

标签: android android-intent contacts

我有联系人的姓名,电话号码和电子邮件信息。我只想为现有联系人插入额外的电子邮件和电话。我的问题是

  1. 如何找到联系人已经存在?
  2. 如何在附加或辅助地址选项中插入值?
  3. 先谢谢。

1 个答案:

答案 0 :(得分:8)

在官方文件中有新的api。

http://developer.android.com/reference/android/provider/ContactsContract.Data.html

首先,使用您的条件查找原始联系人ID,例如名称:

final String name = "reader";
// find "reader"'s contact 
String select = String.format("%s=? AND %s='%s'", 
        Data.DISPLAY_NAME, Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
String[] project = new String[] { Data.RAW_CONTACT_ID };
Cursor c = getContentResolver().query(
        Data.CONTENT_URI, project, select, new String[] { name }, null);

long rawContactId = -1;
if(c.moveToFirst()){
    rawContactId = c.getLong(c.getColumnIndex(Data.RAW_CONTACT_ID));
}
c.close();

其次,使用rawContactId向联系人添加条目:

ContentValues values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "1-800-GOOG-411");
values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
values.put(Phone.LABEL, "free directory assistance");
Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);

PS。不要忘记权限:

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>