2010-12-14 125 views
3

使用Android SDK> 5,我通過啓動ACTION_INSERT活動創建聯繫人。 我想用下面的代碼添加聯繫人多個電話號碼(工作,家庭等):android爲聯繫人添加多個電話號碼

Intent newIntent = new Intent(Intent.ACTION_INSERT, 
      ContactsContract.Contacts.CONTENT_URI); 

for(ContactInfo.Phone p : phones) 
     { 

     newIntent.putExtra(ContactsContract.Intents.Insert.PHONE, p.number); 
     newIntent.putExtra(ContactsContract.Intents.Insert.PHONE_ISPRIMARY, p.isPrimary ? new Integer(1) : null); 
     newIntent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, unconvertPhoneType(p.type)); 

     } 

(unconvertPhoneType()是一個函數來獲取類型CommonDataKinds.Phone.TYPE_XXX )

我只在聯繫人中插入了一個示例。 上述有什麼問題?

此外,在logcat的日誌,我也有以下錯誤:

12-14 11:09:03.015: WARN/Bundle(1724): Key phone_type expected String but value was a java.lang.Integer. The default value was returned.

看起來像是來自PHONE_TYPE,但是CommonDataKinds.Phone.TYPE_XXX是整型的,所以我不知道... 這是什麼原因?

謝謝!

回答

0

logcat告訴你它期望的是一個字符串值,而不是一個整數。那是你的問題。電話號碼應該是String類型。

我從官方文檔中拉出了這個例子,你可以看到電話號碼用「」表示爲一個字符串。

// Add a phone number for Abraham Lincoln. Begin with the URI for 
// the new record  just returned by insert(); it ends with the _ID 
// of the new record, so we don't have to add the ID ourselves. 
// Then append the designation for the phone table to this URI, 
// and use the resulting URI to insert the phone number. 
phoneUri = Uri.withAppendedPath(uri, People.Phones.CONTENT_DIRECTORY); 
values.clear(); 
values.put(People.Phones.TYPE, People.Phones.TYPE_MOBILE); 
values.put(People.Phones.NUMBER, "1233214567"); 
getContentResolver().insert(phoneUri, values); 

希望這會有所幫助。

+0

ContactInfo.Phone.number是一個字符串,因此它不是問題。請注意我通過Intent插入聯繫人,而不是直接將聯繫人插入到您提供的代碼片段中。不過謝謝。 – 2010-12-15 07:48:07

+0

我現在明白了。 – Phobos 2010-12-16 01:24:51

相關問題