0
我正在使用類似下面的聯繫人選擇器來獲取聯繫人的ID。試圖將黑名單列入黑名單時,不匹配聯繫人ID
public void pickContact() {
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
intent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
然後我從上面使用這個返回的uri檢索聯繫人ID。並將其作爲參考存儲。
public static long getContactIdByUri(Context context, Uri uri)
{
Log.d(TAG, uri.toString());
String[] projection = { Contacts._ID };
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
try
{
cursor.moveToFirst();
int idx = cursor.getColumnIndex(Contacts._ID);
long id = -1;
if(idx != -1)
{
id = cursor.getLong(idx);
}
return id;
}
finally
{
cursor.close();
}
}
後來當短信來取我的電話號碼,並根據我嘗試使用以下查找聯繫人ID上。
public static long getContactIdByPhoneNumber(Context context, String phoneNumber) {
ContentResolver contentResolver = context.getContentResolver();
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
String[] projection = new String[] { PhoneLookup._ID };
Cursor cursor = contentResolver.query(uri, projection, null, null, null);
if (cursor == null) {
return -1;
}
int idx = cursor.getColumnIndex(PhoneLookup._ID);
long id = -1;
if(cursor.moveToFirst()) {
id = cursor.getLong(idx);
}
if(cursor != null && !cursor.isClosed()) {
cursor.close();
}
return id;
}
問題是這兩個id不匹配!
因此,基本上問題是我怎樣才能從聯繫人選擇器中獲得一個id,當使用PhoneLookup.CONTENT_FILTER_URI查找電話號碼時,我可以匹配它。我也可以使用它來獲取有關聯繫人的其他信息?