【问题标题】:How insert the contact info on the existing contact in Android 1.6?如何在 Android 1.6 中将联系人信息插入到现有联系人中?
【发布时间】:2010-06-15 13:16:20
【问题描述】:

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

  1. 如何查找联系人是否已经存在?
  2. 如何在附加地址或辅助地址选项中插入值?

提前致谢。

【问题讨论】:

  • 你应该修改你的问题描述指向目标设备是 API 级别 4。

标签: android android-intent contacts


【解决方案1】:

在官方文档中有新的联系人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);

附言。不要忘记权限:

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

【讨论】:

  • 我正在研究 API 级别 4。但是这个 API 在 API 级别 5 上可用。还有其他方法吗?
  • 没有什么可以检查是否检查联系人是否存在。
  • 光标是结果集。结果不存在时不存在(游标计数为零)
  • rawContactId 是什么,如何获得它的值?我保存的任何东西都会变成隐形联系人!
  • 如何将联系人添加为收藏联系人?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2018-04-10
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
相关资源
最近更新 更多