Android Linkify电话号码-如何指定要链接和不链接的号码

Android Linkify电话号码-如何指定要链接和不链接的号码,android,phone-number,linkify,Android,Phone Number,Linkify,我正在用Java编写一个Android应用程序,它显示与西班牙有关的信息,包括电话号码 我使用Linkify使这些电话号码在使用此代码显示时可以链接 Linkify.addLinks(textViewPlaceNotesDetailView, Linkify.PHONE_NUMBERS); 这个很好用 我的问题是,其他数字也以链接形式出现,例如1965年这样的年份 我怎样才能防止这种情况?我只希望电话号码是链接 注意。我想为号码指定一个最小长度,在本例中是9(西班牙语电话号码是格式为“xxx

我正在用Java编写一个Android应用程序,它显示与西班牙有关的信息,包括电话号码

我使用Linkify使这些电话号码在使用此代码显示时可以链接

Linkify.addLinks(textViewPlaceNotesDetailView, Linkify.PHONE_NUMBERS);
这个很好用

我的问题是,其他数字也以链接形式出现,例如1965年这样的年份

我怎样才能防止这种情况?我只希望电话号码是链接


注意。我想为号码指定一个最小长度,在本例中是9(西班牙语电话号码是格式为“xxx xxx xxx xxx”的9位数字)。但是我还没有弄明白怎么做。

你可以使用自定义的
regex
链接电话号码

 tv.setLinksClickable(true);
 //only find phone number
 //Pattern phoneNumberPattern = Pattern.compile("\\d{3}\\s\\d{3}\\s\\d{3}");
 //find phone number or web url
 Pattern phoneNumberPattern = Pattern.compile("(\\d{3}\\s\\d{3}\\s\\d{3})|((https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])");
 Linkify.addLinks(tv, phoneNumberPattern,"");

提供的
regex
正在检测适用于您的案例的xxx xxx xxx数字格式和web URL。

更改为使用LinkIfCompat似乎解决了此问题

我现在使用的代码是:

LinkifyCompat.addLinks(textViewPlaceNotesDetailView, Linkify.PHONE_NUMBERS | Linkify.WEB_URLS);
这适用于(西班牙语)电话号码和URL

我很确定这在我第一次尝试时并没有解决这个问题,但从那时起,我已经更新到使用最新的依赖项,现在它正在工作

我不知道哪个库处理此问题,但我的依赖项现在看起来如下所示:

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'org.osmdroid:osmdroid-android:6.1.7'
implementation 'org.osmdroid:osmdroid-shape:6.1.6'
implementation 'com.google.android.gms:play-services-location:18.0.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.navigation:navigation-fragment:2.3.4'
implementation 'androidx.navigation:navigation-ui:2.3.4'
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation files('libs/commons-net-3.3.jar')
implementation 'com.android.support:design'

试过这个吗@萨贾德:谢谢你的建议,我看到了这个问题,但它对我没有帮助。我的链接适用于电话号码,我想阻止它们适用于其他号码。这个问题中的信息似乎也过时了。谢谢@Sajjad,我已经实现了以下功能,但我的电话号码现在不是链接:
textViewPlaceNotesDetailView.setLinksClickable(true);Pattern phoneNumberPattern=Pattern.compile(\\s?(?:6[0-9]| 7[1-9]| 8[1-9]| 9[1-9])[0-9]\\s?[0-9]{3}\\s?[0-9]{3}$;Linkify.addLinks(textViewPlaceNotesDetailView,phoneNumberPattern,“”);我是否需要在TextView中使用特定的XML格式?显然,您必须使用适当的正则表达式。我更新了我的答案并使用了另一个正则表达式。试试看@GearóidóCeallaighGreat,上述功能对于电话号码和年份都非常有效。但是如果我添加
Linkify.addLinks(textViewPlaceNotesDetailView,Linkify.WEB_URL)链接到链接化web URL后,我的电话号码不再是链接。如何将两者结合起来?添加了regex以查找电话号码和web URL。你可以自己找一下@Gearóidóceallaig将您的问题标题添加到标题和问题正文中,并在标题和正文中添加“Web URL”。