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

來源:互聯網
上載者:User

標籤:android   io   os   使用   ar   java   for   檔案   sp   

案例 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是資料庫中找出來的完整號碼

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.