如何从linkify textview获取url
Posted
技术标签:
【中文标题】如何从linkify textview获取url【英文标题】:How to get url from linkify textview 【发布时间】:2019-10-21 19:54:02 【问题描述】:我需要在 textview 中突出显示 weburl。
为了实现这一点,我在我的 textview xml 中添加了 android:autoLink="web"
属性。
如果 url 与 youtube 视频相关,我需要在我的应用程序的 youtube 播放器活动中播放它,对于其他类型的 url,我希望它在网络浏览器上打开。 那么我如何检测哪个 url 被点击并找到它是否是 youtube 链接并根据它执行重定向。
以下是我的文本视图持有的示例文本
这是示例文本您可以通过此链接找到不错的文章 www.example.com,这里有很好的视频解释 www.youtube.com/xyzpqr 进一步阅读请从以下位置下载 pdf 这里 www.example.com/pdf/xyz
存在多个链接,因此需要检测单击的链接并在所选链接上执行操作。
【问题讨论】:
您是否使用 YouTubePlayer api 在您的 YouTube 活动中显示 YouTube 视频? 我需要使用 exoplayer 在画中画模式下播放 youtube 视频 @dev_swat 我不知道 exoplayer 如何处理 Youtube 视频。播放 youtube 视频是否需要 youtube 视频 ID? 如果您打算构建一个单独的活动来播放 youtube 视频,您应该在 Google 的官方 YouTubeplayer API 中播放 Youtube 视频。 developers.google.com/youtube/android/player @VedprakashWagh youtubevideo 链接位于 textview 中,该链接提供给 exoplayer 以播放在线内容 【参考方案1】:您可以在 TextView 上应用侦听器,并在检测到点击时使用 Android 中的 StartsWith 方法来检测 url 是否以您开头。(youtube 的 url)如果匹配,您的 youtube 播放器是否会执行重定向
【讨论】:
【参考方案2】:你为什么不改用setMouvementMethod()
?
在你的 TextView 中试试这个:
<TextView
android:id="@+id/myTextView"
android:layout_
android:layout_
android:text="Text"/>
然后在你的 Java 类中添加这一行:
TextView myLink = (TextView) findViewById(R.id.myTextView);
myLink.setMovementMethod(LinkMovementMethod.getInstance());
【讨论】:
【参考方案3】:请在xml
文件的文本视图中尝试以下属性:
android:autoLink="all"
android:linksClickable="false"
android:textColorLink="#3393FF"
您可以使用 contains 功能检查 URL。
textView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String URL = textView.getText().toString();
if (URL.contains("youtube") || URL.contains("youtu.be"))
// then redirect to youtube
else if (URL.contains("pdf"))
// then redirect to pdf app
else
// then redirect to web
);
或
您可以使用下面的库和链接:https://github.com/saket/Better-Link-Movement-Method
implementation 'me.saket:better-link-movement-method:2.2.0'
试试下面的代码:
BetterLinkMovementMethod
.linkify(Linkify.ALL, textView)
.setOnLinkClickListener((textView, url) ->
// Handle clicks.
if (url.contains("youtube") || url.contains("youtu.be"))
// then redirect to youtube
else if (url.contains("pdf"))
// then redirect to pdf app
else
// then redirect to web
return true;
)
.setOnLinkLongClickListener((textView, url) ->
// Handle long-clicks.
return true;
);
【讨论】:
我已经添加了自动链接网站,我只想打开网页网址,但只需要在我的客户 youtube 活动中处理 youtube 链接 如何获取选定的 URL。 textview 上是否有任何方法,例如 textview.getselectedURL() 您的方法检查整个 textview 数据并在该文本中找到 youtube 和 pdf 单词,我只是突出显示 vai linkify text 的 url以上是关于如何从linkify textview获取url的主要内容,如果未能解决你的问题,请参考以下文章
Android TextView,Linkify 每种语言的美国电话号码
java 添加指向TextView的链接。 Linkify。字体:https://stackoverflow.com/questions/4746293/android-linkify-textvie
Android TextView 启用 LinkiFy 和 Href 标签