我正在使用联系人选择器:
startActivityForResult(
new Intent(
Intent.ACTION_PICK,
Phone.CONTENT_URI
), CONTACT_PICKER_RESULT //1001
);
此类型的联系人选择器会选择联系人的特定电话号码。
然后我获得此联系人的ID:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode != CONTACT_PICKER_RESULT || resultCode != RESULT_OK)
return;
String id = data.getData.getLastPathSegment();
}
但是,当我使用PhoneLookup查询时,例如:
Cursor cur = getContentResolver().query(
Uri.withAppendedPath(
PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(...) //phone number of contact is filled in
),
new String[] {
PhoneLookup.DISPLAY_NAME,
Phone._ID
}, null, null, null
);
if (!cur.moveToFirst())
return;
String id = cur.getString(
cur.getColumnIndex(Phone._ID)
);
我从PhoneLookup获得的ID与onActivityResult的不同。例如,联系人选择器返回1408,而光标返回444。
我怎样才能得到:
data.getData().getLastPathSegment()
等于cur.getColumnIndex(...)
?
答案 0 :(得分:0)
在这种情况下,您无法使用PhoneLookup。您需要查询Phone.CONTENT_URI以获取与联系人选择器匹配的ID。以下代码就是这样做的。
Cursor cur = getContentResolver().query(
Phone.CONTENT_URI,
new String[] {
Phone.DISPLAY_NAME,
Phone._ID
},
Phone.NORMALIZED_NUMBER + "=?",
new String[] {
... //phone number placed here
}, null);
if (!cur.moveToFirst())
return;
String id = cur.getString(cur.getColumnIndex(Phone._ID)));