2011-03-04 94 views
2

可能重複:
How to add new contacts in android的Android寫的聯繫人

我如何添加一個名字聯繫人? 我有兩個spinners,一個用於firstname,一個用於lastname。分配的變量是linkname1和linkname2。當用戶按下確定按鈕(這些都在對話框中)時,名稱(linkname1 +「」+ linkname2)應添加到聯繫人。我可以閱讀這些聯繫人,但我該怎麼寫呢?

感謝

更新: 我也試過這樣:

newname = linkname1 + " " + linkname2; 
ContentValues values = new ContentValues(); 
vales.put(ContactsContract.Contacts.DISPLAY_NAME, newname); 

這:

StringBuffer strBuf = new StringBuffer(); 
strBuf.append(linkname1); 
strBuf.append(" "); 
strBuf.append(linkname2); 
ContentValues values = new ContentValues(); 
values.put(ContactsContract.Contacts.DISPLAY_NAME, strBuf.toString()); 

但新名稱未在聯繫人列表中出現。

回答

1

該內容提供者雖然仍然可以工作,但被替換爲2.2中的聯繫人合同。下面的代碼將與新的聯繫人合同商的工作:

ArrayList<ContentProviderOperation> ops = 
      new ArrayList<ContentProviderOperation>(); 
... 
int rawContactInsertIndex = ops.size(); 
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
      .withValue(RawContacts.ACCOUNT_TYPE, accountType) 
      .withValue(RawContacts.ACCOUNT_NAME, accountName) 
      .build()); 

ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
      .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) 
      .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(StructuredName.GIVEN_NAME, linkname1) 
      .withValue(StructuredName.FAMILY_NAME, linkname2) 
      .build()); 

getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 

帳戶名和類型,將有來自AccountManager服務來查詢。通過選擇一個帳戶(例如Local或Google)或提示用戶。