電話の通話記録をListViewに照会します。したがって、ユーザーがアイテムを長押しすると、「連絡先の表示」などのオプションがダイアログに表示されます。連絡先を表示できるようにするには、インテントに連絡先IDが必要です。私の問題は、私が常に正しい連絡先を見ることができるとは限らないということです。Peterをクリックすると、Peterのコンタクトシートが表示されます。サラをクリックすると、ジェイソンのコンタクトシートが表示されます。
私はこのコードを間違った方法で使用していたに違いありません。助けてください。
ContentResolver contentResolver = getContentResolver();
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phone));
Cursor cursor = contentResolver.query(uri, new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID}, null, null, null);
if(cursor!=null) {
while(cursor.moveToNext())
{
String contactName = cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME));
contactid2 = cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup._ID));
}
cursor.close();
}
Intent intent_contacts = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people/" + contactid2));
startActivity(intent_contacts);
たぶん私が必要としているのはPhoneLookup._IDではなく、他のIDです。
私もここでフェリペの答えを試しました、同じことが起こります。
編集:
- HTC Desire HD(2.3.5)では、99%のケースで適切な連絡先を取得しています。
- ZTE Blade(2.2)の場合60%のケースで適切な連絡先を取得します。
- サムスンギャラクシーエース(2.3.3)で私はケースの5%で適切な連絡先を取得します。
一体何が起こっているのか?