本文實例講述了Android編程中號碼匹配位數修改的方法。分享給大家供大家參考,具體如下:
Android2.1上默認的號碼匹配位數是7位,也就是說從右向左算起,如果兩個號碼有7位是匹配的,那么就認為是相同的號碼,如+86 1234567和01234567是相同的號碼;所以判斷兩個號碼是否匹配,簡單的用”==”是不行的。
安卓在Sqlite層新增了函數phone_numbers_equal用于號碼匹配的判斷,這個函數是數據庫級的,對應的SQL語句是PHONE_NUMBERS_EQUAL,android將該函數以2個參數和3個參數的形式注冊到sqlite數據庫里,2個參數的情況無非就是號碼A和號碼B,3個參數則多了一個bool變量,用來指示是否使用嚴格匹配,這個嚴格匹配是專門給泰國用的,看來泰國的號碼規則比較特別,而在我們國家,這個變量一般情況下都是0了。
進入正題,修改android的號碼匹配位數,其實很簡單,修改OldPhoneNumberUtils.cpp文件中的最小匹配位數為想要的數字即可,該數字在函數phone_number_compare_loose函數中使用,這個函數其實就是號碼匹配的真正函數,文件位置:external/sqlite/android
static int MIN_MATCH = 7; //修改成你想要的數字
在framwork層還有個一樣的java函數實現,compareLoosely(A,B),framewoeks/base/telephony/java/android/telephony/PhoneNumberUtils.java,其中使用到的MIN_MATCH同樣需要修改。
【注】:2.1上 phone_number_compare_loose 和 compareLoosely函數的實現里面少了幾句代碼,算是BUG吧,會影響英文狀態下6位長度的號碼的匹配
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答
圖片精選