检查电话号码存在于android的联系人列表中

Jes*_* MJ 5 android android-intent

我试图检查联系人列表中存在的号码,我使用下面的代码,但我总是在这一行得到错误

 Cursor cur = this.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我找出问题,我已经允许在清单中阅读我的联系人

  public String getContactName(String number)
{
    String name = null;
    Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
    String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME };
    Cursor cur = this.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
    try 
    {
       if (cur.moveToFirst())
       {
           name = cur.getString(cur.getColumnIndex(PhoneLookup.DISPLAY_NAME));
           return name;
       }
    }
    finally 
    {
    if (cur != null)
       cur.close();
    }
    return "unknown number";
}
Run Code Online (Sandbox Code Playgroud)

这是我的错误日志! 错误日志

Lin*_*vel 6

试试这段代码:(使用上下文)

public boolean contactExists(Context context, String number) {
/// number is the phone number
Uri lookupUri = Uri.withAppendedPath(
PhoneLookup.CONTENT_FILTER_URI, 
Uri.encode(number));
String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME };
Cursor cur = context.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
try {
    if (cur.moveToFirst()) {
        return true;
    }
}
finally {
    if (cur != null)
        cur.close();
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)