連絡先リストにある一部の人の電話番号を抽出する際に問題が発生しています。
最初に、すべての連絡先をリストビューに表示します。
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER
};
mCursor = mContext.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
projection, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[] {mContactId}, null);
アイテムをクリックすると、これが contact_id を取得する方法です。
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Cursor currentCursor = mContactsAdapter.getCursor();
if (currentCursor != null) {
notifyOnContactSelectedListeners(String.valueOf(id));
}
}
次に、新しいフラグメントを作成し、読み込み中に連絡先の電話番号と表示名を照会します。
if (cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
String firstName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
電話を持っている人の場合、私はこの方法で電話番号を取得しますが、それで問題ありません。しかし、この方法で電話番号を取得できない人もいますが、デフォルトの電話帳に電話番号が登録されています。
何が悪かったのか?