2012-10-03 32 views
1

工作,我用這個代碼添加原料接觸自動接觸聚集不會在安卓4.0

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

試試下面的代碼:

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

你的回答開始的活動,我是想以批處理模式添加聯繫人。我有很多聯繫人要添加一次,所以我無法啓動一項活動。此外,Intent.ACTION_INSERT不能爲android 2.X插入許多字段(如網站等)。 – user1477339

+0

是的,但在同一活動中,它會添加聯繫人。它不會去新的活動,因爲它是StartActivityForResult函數...在這裏,我不會去任何其他活動添加聯繫人......它將在我看到的同一活動 –

+0

。我在看到您的回覆之前編輯了我的評論。我之前使用過ACTION_INERT_OR_EDIT,發現它非常有限,我只能在較低版本的平臺上插入一些基本字段。 – user1477339