android會將count> = 5的數字當作電話號碼。所以我認爲至少有兩個解決方案:
1)一個簡單的解決方法:如果你確定電話號碼的長度超過5,例如至少6位數,你可以做一些工作:
private final static int MY_PHONE_NUMBER_MINIMUM_DIGITS = 6;
Linkify.addLinks(main, Patterns.PHONE, "tel:", new Linkify.MatchFilter() {
public final boolean acceptMatch(CharSequence s, int start, int end) {
int digitCount = 0;
for (int i = start; i < end; i++) {
if (Character.isDigit(s.charAt(i))) {
digitCount++;
if (digitCount >= MY_PHONE_NUMBER_MINIMUM_DIGITS) {
return true;
}
}
}
return false;
}
}, Linkify.sPhoneNumberTransformFilter);
此解決辦法是基於Linkify的機器人的源代碼,在Linkify,該方法:
gatherLinks(links, text, Patterns.PHONE,
new String[] { "tel:" },
sPhoneNumberMatchFilter, sPhoneNumberTransformFilter);
將被調用,而sPhoneNumberMatchFilter將過濾位數小於5:
public static final MatchFilter sPhoneNumberMatchFilter = new MatchFilter() {
public final boolean acceptMatch(CharSequence s, int start, int end) {
int digitCount = 0;
for (int i = start; i < end; i++) {
if (Character.isDigit(s.charAt(i))) {
digitCount++;
if (digitCount >= PHONE_NUMBER_MINIMUM_DIGITS/*=5*/) {
return true;
}
}
}
return false;
}
};
所以我們只用6
2取代「PHONE_NUMBER_MINIMUM_DIGITS」)一個更復雜的解決方案是,如果你的手機號碼是在例如一個更具體的格式,一定要像「(XXX)XXX-XXXX 「,您可以使用自己的模式來替換Patterns.PHONE,以更準確地提取和應用電話號碼鏈接。
請注意,您的頂部有多餘的報價。我刪除了它,但請檢查它是否不在您的實際代碼中。 –
糟糕。沒有在我的代碼中。感謝壽。我只是改變它真正的快速,使它假街和 – Evorlor