androidは、count>=5の数字を電話番号と見なします。したがって、少なくとも2つの解決策があると思います。
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のAndroidソースコードに基づいています。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;
}
};
したがって、「PHONE_NUMBER_MINIMUM_DIGITS」を6に置き換えるだけです。
2)より複雑な解決策は、電話番号がより具体的な形式である場合、たとえば「(xxx)xxx-xxxx」のようなものでなければならない場合、独自のパターンを使用してPatterns.PHONEを置き換え、抽出して電話番号のリンクをより正確に適用する