检查联系人

时间:2017-03-11 06:19:19

标签: java android

我使用此处列出的代码Check Incoming number is stored in Contacts list or not android来检查联系人中是否存在传入号码。此代码始终不会给出正确的结果。

是否需要进行一些校正或其他更好的检查方法?

代码:

String res = null;
try {
    ContentResolver resolver = context.getContentResolver();
    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    String a = uri.getLastPathSegment();
    Cursor c = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, ContactsContract.CommonDataKinds.Phone._ID + "=?", new String[]{a}, null);

    if (c != null) { // cursor not null means number is found contactsTable
        if (c.getCount() > 0) {
        if (c.moveToFirst()) {   // so now find the contact Name
            res = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            //res = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        }
        c.close();
        }
    }
} catch (Exception ex) {
    ex.printStackTrace();
}
return res;

1 个答案:

答案 0 :(得分:1)

尝试以下代码简单&为我工作。

public class TestActivity extends Activity {

private static final int REQUEST_CONTACT_NUMBER = 8512885487;

/** Pops the "select phone number" window */
public void onBrowseForNumbersButtonClicked(View view) {
    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI);
    startActivityForResult(contactPickerIntent, REQUEST_CONTACT_NUMBER);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
    if(data != null && requestCode == REQUEST_CONTACT_NUMBER) {  
    Uri uriOfPhoneNumberRecord = data.getData();
    String idOfPhoneRecord = uriOfPhoneNumberRecord.getLastPathSegment();
    Cursor cursor = getContentResolver().query(Phone.CONTENT_URI, new String[]{Phone.NUMBER}, Phone._ID + "=?", new String[]{idOfPhoneRecord}, null);
    if(cursor != null) {
    if(cursor.getCount() > 0) {
        cursor.moveToFirst();
        String formattedPhoneNumber = cursor.getString( cursor.getColumnIndex(Phone.NUMBER) );
        Log.d("TestActivity", String.format("The selected phone number is: %s", formattedPhoneNumber));
    }
    cursor.close();
    }
    }
else {
    Log.w("TestActivity", "WARNING: Corrupted request response");
}
}
else if (resultCode == RESULT_CANCELED) {
    Log.i("TestActivity", "Popup canceled by user."); 
}
else {
    Log.w("TestActivity", "WARNING: Unknown resultCode");
}
}
}