Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 電話薄先10位匹配,若是無法匹配,則換成7位匹配

android 電話薄先10位匹配,若是無法匹配,則換成7位匹配

編輯:關於Android編程

案例 1:
如果您保存的有:A:04165191666, B:5191666, 來電號碼是:04165191666
因為是7位匹配,所以A和B都可以匹配到,但是最佳匹配還是A,最後顯示A;
來電5191666則匹配到B。
案例 2:
僅保存 A:04165191666,
來電5191666或者04165191666則都匹配A。
案例 3:
僅保存 B:5191666,
來電5191666或者04165191666則都匹配B。


可以在7匹配的基礎上,將符合條件的號碼匹配做進一步篩選即可。

首先,需要將MIN_MATCH修改為7位匹配,請修改以下兩只文件,保證return MIN_MATCH都是7
【Bfore KK1】
(1).修改OldPhoneNumberUtils.cpp (alps\external\sqlite\android),getMinMatch()返回值
2、PhoneNumberUtils.java (alps\frameworks\base\telephony\java\android\telephony)中的MIN_MATCH;
【After KK1】
(1).修改OldPhoneNumberUtils.cpp(alps\external\sqlite\android),getMinMatch()返回值
(2).修改PhoneNumberExt.java (mediatek\frameworks\base\op\java\com\mediatek\op\telephony)中的
getMinMatch() 返回值

另外,請修改DialerSearchUtils.java (alps\packages\providers\contactsprovider\src\com\android\providers\contacts)中的
public static Cursor findNumberExactMatchedCursor(Cursor cursor, String normalizedNumber)方法
這裡說明一下:


這個方法是在號碼匹配的基礎上,再進一步過濾精確號碼並返回
輸入參數:
cursor是所有經過7位匹配後返回數據,後續會從這裡面再做精確匹配
normalizedNumber是call/mms所使用的號碼
輸出:
若是返回已經匹配上,則
MatrixCursor exactCursor = matrixCursorFromCursorRow(cursor, cursor.getPosition());
cursor.close();
return exactCursor;
若是沒有匹配上,則
return null;

另外兩個號碼,說明一下:
normalizedNumber是call/mms所使用的號碼
data1是數據庫中找出來的完整號碼
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved