【问题标题】:How to get url from linkify textview如何从linkify textview获取url
【发布时间】: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 以播放在线内容

标签: android youtube textview linkify


【解决方案1】:

您可以在 TextView 上应用侦听器,并在检测到点击时使用 Android 中的 StartsWith 方法来检测 url 是否以您开头。(youtube 的 url)如果匹配,您的 youtube 播放器是否会执行重定向

【讨论】:

    【解决方案2】:

    你为什么不改用setMouvementMethod()

    在你的 TextView 中试试这个:

    <TextView
        android:id="@+id/myTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        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
      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      相关资源
      最近更新 更多