当前位置: 代码迷 >> 综合 >> 在信息收件人里输入号码,不要匹配到电话本里的服务号码
  详细解决方案

在信息收件人里输入号码,不要匹配到电话本里的服务号码

热度:0   发布时间:2024-01-19 17:50:32.0
假设电话本里存在SDN(服务号码):" *666"
发送信息,在收件人栏里输入“ 666”,这时会匹配到电话本里的 "*666"
如果不希望匹配到服务号码,只是发送给222这个号码,需要做以下修改
[SOLUTION]
 
1. 修改ContactsProvider2.javas --> PhoneLookupProjectionMap的定义:
.add(PhoneLookupColumns.RAW_CONTACT_ID, "raw_contacts._id")
            // 加入下面这行
            .add(PhoneLookup.IS_SDN_CONTACT, "raw_contacts.is_sdn_contact")
             //add phone_lookup query fields for mms
            .add(Phone._ID, "contacts_view." + Contacts._ID)
2. 
packages/apps/Mms/src/com/android/mms/data/Contact.java
(1)
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.RawContacts;
(2)
private static final String EXCLUDE_SDN_SELECTION = RawContacts.IS_SDN_CONTACT + "<1";
(3)
getContactInfoForPhoneNumber函数
               Cursor cursor = mContext.getContentResolver().query(
                        Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, normalizedNumber), CALLER_ID_PROJECTION, null, null, null);
修改为:
              Cursor cursor = mContext.getContentResolver().query(
                        Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, normalizedNumber), CALLER_ID_PROJECTION, EXCLUDE_SDN_SELECTION, null, null);
  相关解决方案