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 안드로이드 소스 코드 Linkify에서, 상기 방법에 기초한다 : sPhoneNumberMatchFilter가 자리를 필터링 할 때,
gatherLinks(links, text, Patterns.PHONE,
new String[] { "tel:" },
sPhoneNumberMatchFilter, sPhoneNumberTransformFilter);
호출할지 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