自动联系人聚合在android 4中不起作用

时间:2012-10-03 03:51:57

标签: android

我使用此代码添加原始联系人

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中,所有这些 虽然它们是相同的,但它们看起来是独立的联系人。

这是系统或功能的错误吗?或者只是因为我错过了 什么?

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;
    }   
   }