|
|
|
@ -45,7 +45,7 @@ public class Contact {
|
|
|
|
|
if(sContactCache.containsKey(phoneNumber)) {//查找sContactCache中是否有phoneNumber的信息
|
|
|
|
|
return sContactCache.get(phoneNumber);//如果有就返回如果没有就不管
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 将电话号码的查询条件中的占位符替换为与号码匹配的最小匹配号码
|
|
|
|
|
String selection = CALLER_ID_SELECTION.replace("+",
|
|
|
|
|
PhoneNumberUtils.toCallerIDMinMatch(phoneNumber));
|
|
|
|
|
Cursor cursor = context.getContentResolver().query( // 查找数据库中phoneNumber的信息
|
|
|
|
@ -54,19 +54,25 @@ public class Contact {
|
|
|
|
|
selection,
|
|
|
|
|
new String[] { phoneNumber },
|
|
|
|
|
null);
|
|
|
|
|
|
|
|
|
|
// 如果查询到phoneNumber的信息的结果集并且结果集中有数据
|
|
|
|
|
if (cursor != null && cursor.moveToFirst()) {
|
|
|
|
|
try {
|
|
|
|
|
// 从结果集中获取联系人的显示名称
|
|
|
|
|
String name = cursor.getString(0);
|
|
|
|
|
// 将电话号码与联系人的显示名称放入联系人缓存中
|
|
|
|
|
sContactCache.put(phoneNumber, name);
|
|
|
|
|
// 返回联系人的显示名称
|
|
|
|
|
return name;
|
|
|
|
|
} catch (IndexOutOfBoundsException e) {
|
|
|
|
|
// 捕获异常,打印错误日志
|
|
|
|
|
Log.e(TAG, " Cursor get string error " + e.toString());
|
|
|
|
|
return null;
|
|
|
|
|
return null; // 返回空
|
|
|
|
|
} finally {
|
|
|
|
|
// 无论是否发生异常,都要关闭 cursor
|
|
|
|
|
cursor.close();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果没有匹配的联系人信息,记录日志
|
|
|
|
|
Log.d(TAG, "No contact matched with number:" + phoneNumber);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|