我试图检查联系人列表中存在的号码,我使用下面的代码,但我总是在这行收到错误
Cursor cur = this.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
任何人都可以帮我找出问题,我已经允许在清单中阅读我的联系人
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";
}
这是我的错误日志!
答案 0 :(得分: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;
}
答案 1 :(得分:0)
对我有用。已处理NullPointerException。
public boolean contactExists(Context context, String number) {
if (number != null) {
ContentResolver cr = context.getContentResolver();
Cursor curContacts = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (curContacts.moveToNext()) {
String contactNumber = curContacts.getString(curContacts.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if (number.equals(contactNumber)) {
return true;
}
}
return false;
} else {
return false;
}
}