使用Android聯繫人API時的問題使用Android聯繫人API時的問題
Button放置在EditText旁邊。
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, Constants.PICK_CONTACT);
上面的代碼將調用下面的方法: - else條件來處理
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
if (reqCode == Constants.PICK_CONTACT) {
if (resultCode == Activity.RESULT_OK) {
String contactStr = getContactInfo(data);
mEditTxtTo.setText(contactStr);
}
}
}
protected String getContactInfo(Intent intent) {
String contactEmail = "";
Cursor cursor = managedQuery(intent.getData(), null, null, null, null);
while (cursor.moveToNext()) {
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
// Find Email Addresses
Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId, null, null);
while (emails.moveToNext()) {
if (contactEmail.trim().length() > 0) {
contactEmail = new StringBuilder(contactEmail).append(IShipdocsMobileConstants.SEMICOLON_DELIMITER)
.append(emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA))).toString();
} else {
contactEmail = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
emails.close();
}
cursor.close();
return contactEmail;
}
我又多,如果當用戶點擊該按鈕,聯繫人API是使用以下代碼調用以下問題:
假設在名爲A的聯繫人中,有3個電子郵件ID。因此,在第一封電子郵件添加到contactEmail之後,在用分號分隔的第一封電子郵件後追加下一封電子郵件,該循環繼續到最後一個元素。
if (contactEmail.trim().length() > 0) {
contactEmail = new StringBuilder(contactEmail).append(";")
.append(emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA))).toString();
} else {
contactEmail = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
當多個郵件有多個聯繫人時,目前面臨的問題。
假設3個接觸是有,A,B &Ç
現在,聯繫人姓名:A具有以下的電子郵件(或多個):
[email protected] [email protected] Ç @ c.com
聯繫人姓名:B有以下電子郵件(S):
[email protected] [email protected]
如果僅添加聯繫人A,則會在contactEmail上添加兩次 [email protected]。 在我看來,上面的代碼在所有聯繫人上搜索[email protected]。
所以,這是返回的最後電子郵件爲:[email protected],[email protected],[email protected],[email protected]
任何建議/查找上的錯誤提示上面的代碼。
我認爲第一步是確定是否將所有4封電子郵件都退回到您的Cursor查詢中。它將幫助您確定字符串構建循環或光標查詢是否存在問題。您可以使用'DatabaseUtils.dumpCursor(Cursor cursor)'來查詢查詢返回的整個Cursor以查找電子郵件地址。 – Gophermofur