android 添加MCCMNC自动号码匹配后拨号匹配不到联系人

由于不同的sim卡对应不同的mccmnc, 导致min_match的值发生变化,
新的min_match值与之前phone_lookup表中保存的min_match不一直,导致无法匹配上。
 
修改如下:  
1. 添加URI
修改ContactsProvider2.java,
    private static final int PHONE_LOOKUP = 4000;
下面加入一行: 
    private static final int PHONE_LOOKUP2 = 4001;  // New Add
   
    matcher.addURI(ContactsContract.AUTHORITY, "provider_status", PROVIDER_STATUS); 
下面加入一行:
    matcher.addURI(ContactsContract.AUTHORITY, "phone_lookup2", PHONE_LOOKUP2);    // New Add
 
2. 实现处理对应URI的方法
修改contactsProvider2.java 的 updateInTransaction().
case PHONE_LOOKUP2: 
    final SQLiteDatabase mDb = mDbHelper.get().getWritableDatabase();    // mDb
    Cursor c = mDb.query(Tables.PHONE_LOOKUP,
                         new String[]{ PhoneLookupColumns.DATA_ID,
                                            PhoneLookupColumns.RAW_CONTACT_ID,
                                            PhoneLookupColumns.NORMALIZED_NUMBER, 
                                            PhoneLookupColumns.MIN_MATCH },
                         null, null, null, null, null);
    while(c.moveToNext()) {
        long dataId = c.getLong(0);
        long rawContactId = c.getLong(1);
        String normalizeNumber = c.getString(2);
        String oldMinMatch = c.getString(3);


        ContentValues phoneValues = new ContentValues();
        phoneValues.put(PhoneLookupColumns.RAW_CONTACT_ID, rawContactId);
        phoneValues.put(PhoneLookupColumns.DATA_ID, dataId);
        phoneValues.put(PhoneLookupColumns.NORMALIZED_NUMBER, normalizeNumber);
       
        // get minMatch
        Log.d(TAG, "[PHONE_LOOKUP2]1.normalizeNumber:" + normalizeNumber);
        String minMatch = PhoneNumberUtils.toCallerIDMinMatch(normalizeNumber);
     
        phoneValues.put(PhoneLookupColumns.MIN_MATCH, minMatch);
        Log.d(TAG, "[PHONE_LOOKUP2]2.normalizeNumber:" + normalizeNumber + "  oldMinMatch:" + oldMinMatch + "  minMatch:" + minMatch);
        mDb.update(Tables.PHONE_LOOKUP, phoneValues, PhoneLookupColumns.DATA_ID + "=" + dataId + " AND " + PhoneLookupColumns.RAW_CONTACT_ID + "=" + rawContactId, null);     
    }
    c.close();
    break;
 
3. 启动更新phone_lookup表的min_match
------------[JB 4.2]------------
修改Contacts包下的AbstractStartSIMService.java
 Case FINISH_IMPORTING 这个case下面的 break 前面的 canStopSelf()之前加入如下代码:
 ... ...
 if (canStopSelf) {
  Log.i(TAG, "Will call stopSelf here.")
  // New add
  ContentResolver contentResolver = mContext.getContentResolver();
  Uri uri = Uri.parse("content://com.android.contacts/phone_lookup2");
  contentResolver.update(uri, new ContentValues(), null, null);
  // End
  stopSelf();
 }
------------[KK 4.4]------------
修改SIMProcessorManager.java,SIMProcessorManager() --> handleMessage(),
在callStopService()之前加入如下代码:
  ... ...
  LogUtils.d(TAG, "handleMessage MSF_SEND_STOP_SERVICE");
  // New add
  ContentResolver contentResolver = mContext.getContentResolver();
  Uri uri = Uri.parse("content://com.android.contacts/phone_lookup2");
  contentResolver.update(uri, new ContentValues(), null, null);
  // End
  callStopService();
  ... ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值