ユーザーは連絡先から連絡先を選択します。これがコールバック関数です (onActivityResult(...)
コードをスキップしていますが、正常に動作しています)。
private User addUserFromContactData(Intent data) {
Uri contactData = data.getData();
// Cursor loader to query contact information
CursorLoader cl = new CursorLoader(this);
String[] projection = { ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Email.DATA };
cl.setProjection(projection);
cl.setUri(ContactsContract.CommonDataKinds.Email.CONTENT_URI);
cl.setSelection(ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?");
cl.setSelectionArgs(new String[] { contactData.getLastPathSegment() });
// Execute query and get results from cursor
Cursor c = cl.loadInBackground();
final int nameIndex = c.getColumnIndex(projection[0]);
final int emailIndex = c.getColumnIndex(projection[1]);
User user = null;
if (c.moveToFirst()) {
user = new User();
user.setName(c.getString(nameIndex));
user.setEmail(c.getString(emailIndex));
}
c.close();
return user;
}
この方法は、電子メール アドレスを持つ連絡先では問題なく機能します。しかし、それなしで連絡先を選択すると、結果が見つかりません。電子メールは私にとってオプションなので、電子メールがない場合は、連絡先の名前のみを使用します. メールアドレスのある連絡先のみを選択しているようです。
誰でも私を助けることができますか?1 回目は名前を取得し、2 回目はオプションの電子メールを取得するために、2 回クエリを実行する必要があるのでしょうか。
みんなありがとう。