diff --git a/app/src/main/java/net/micode/notes/data/Contact.java b/app/src/main/java/net/micode/notes/data/Contact.java index d97ac5d..d376b43 100644 --- a/app/src/main/java/net/micode/notes/data/Contact.java +++ b/app/src/main/java/net/micode/notes/data/Contact.java @@ -26,48 +26,52 @@ import android.util.Log; import java.util.HashMap; public class Contact { - private static HashMap sContactCache; - private static final String TAG = "Contact"; + private static HashMap sContactCache;//定义hashmap sContactCache,联系人缓存 + private static final String TAG = "Contact";//不能更改TAG private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" + " AND " + Data.RAW_CONTACT_ID + " IN " + "(SELECT raw_contact_id " + " FROM phone_lookup" - + " WHERE min_match = '+')"; + + " WHERE min_match = '+')";//选择呼叫者呼叫的ID,当其等于该号码时获取 public static String getContact(Context context, String phoneNumber) { if(sContactCache == null) { sContactCache = new HashMap(); - } + }//为联系人缓存分配空间,如果它没被分配 if(sContactCache.containsKey(phoneNumber)) { return sContactCache.get(phoneNumber); - } + }//返回电话号码 String selection = CALLER_ID_SELECTION.replace("+", PhoneNumberUtils.toCallerIDMinMatch(phoneNumber)); + //使呼叫者id的替换方法赋予选择 Cursor cursor = context.getContentResolver().query( Data.CONTENT_URI, new String [] { Phone.DISPLAY_NAME }, selection, new String[] { phoneNumber }, - null); + null);//cursor指向context的query方法返回值 if (cursor != null && cursor.moveToFirst()) { try { String name = cursor.getString(0); sContactCache.put(phoneNumber, name); return name; - } catch (IndexOutOfBoundsException e) { + }//返回名字 + catch (IndexOutOfBoundsException e) { Log.e(TAG, " Cursor get string error " + e.toString()); return null; - } finally { + } //处理异常 + finally { cursor.close(); - } - } else { + }//释放 + } //令cursor返回到第一条 + else { Log.d(TAG, "No contact matched with number:" + phoneNumber); return null; - } + }//号码不匹配 } }