我将手机的通话记录查询到 ListView 中。因此,当用户长按某个项目时,会出现一个对话框,其中包含“查看联系人”等选项。为了能够查看联系人,意图需要联系人 ID。我的问题是我并不总是能看到正确的联系人。我点击彼得,然后彼得的联系表出现了。我点击莎拉,杰森的联系表出现了。
我一定是错误地使用了这段代码。请帮忙。
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。
我也在这里尝试了 Felipe 的回答,同样的情况。
编辑:
- 在 HTC Desire HD (2.3.5) 上,我在 99% 的情况下都能找到正确的联系人。
- 在 ZTE Blade (2.2) 上,我在 60% 的情况下都能得到正确的接触。
- 在三星 Galaxy Ace (2.3.3) 上,我在 5% 的情况下获得了正确的联系人。
这到底是怎么回事???