/* * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.micode.notes.data; import android.content.Context; import android.database.Cursor; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Data; import android.telephony.PhoneNumberUtils; import android.util.Log; import java.util.HashMap; /** *
联系人信息查询和缓存类。
*核心职责:
*设计意图:
*关键关联:
*联系人缓存,存储电话号码和联系人姓名的映射。
*业务含义:避免重复查询相同电话号码的联系人信息,提高性能。
*实现:使用HashMap存储,电话号码为键,联系人为值。
*/ private static HashMap日志标签。
*业务含义:用于在日志中标识Contact类的相关操作。
*/ private static final String TAG = "Contact"; /** *联系人查询条件。
*业务含义:定义查询联系人信息的SQL条件,使用PHONE_NUMBERS_EQUAL函数匹配电话号码。
*注意:其中的'+'会在查询时被替换为实际的电话号码匹配模式。
*/ 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 = '+')"; /** *根据电话号码获取联系人姓名。
*功能:通过电话号码查询手机通讯录中的联系人姓名,并缓存结果。
* * @param context 上下文对象,用于访问ContentResolver * @param phoneNumber 电话号码,用于查询联系人 * * @return 联系人姓名,如果未找到则返回null * *查询流程:
*错误处理:
*