我使用此代码添加原始联系人
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, null)
.withValue(RawContacts.ACCOUNT_NAME, null)
.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DEFAULT)
.build());
....
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
如果我多次添加相同的信息,在android 2.1和2.2中都是如此 原始联系人出现在一个联系人下面。但在4.03和4.1中,所有这些 虽然它们是相同的,但它们看起来是独立的联系人。
这是系统或功能的错误吗?或者只是因为我错过了 什么?
答案 0 :(得分:0)
尝试以下代码:
1)点击“关闭”按钮尝试以下操作:
Intent in = new Intent(Intent.ACTION_INSERT);
in.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(in,ADD_DATA);
2)ONActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ADD_DATA:
if(resultCode == RESULT_OK) {
Uri contactData = data.getData();
Cursor cur = managedQuery(contactData, null, null, null, null);
ContentResolver contect_resolver = getContentResolver();
if (cur.moveToFirst()) {
String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String lookupkey = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY));
String name = "";
String no = "";
Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
if (phoneCur.moveToFirst()) {
name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String lookup = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY));
System.out.println("Contact Name"+name);
System.out.println("Number"+no);
id = null;
name = null;
no = null;
phoneCur = null;
contect_resolver = null;
cur = null;
}
}
}
if(resultCode == RESULT_CANCELED)
{
}
break;
default:
break;
}
}