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

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

編輯:關於Android編程

若是一些海外需求,對於號碼匹配位數,需要先10位匹配,若是無法匹配,則換成7位匹配

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


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

首先,需要將MIN_MATCH修改為7位匹配,請修改以下兩只文件,保證return MIN_MATCH都是7
1、PhoneNumberUtils.java中的MIN_MATCH;
2、OldPhoneNumberUtils.cpp中的MIN_MATCH;

另外,請修改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