Как получить URL-адрес из linkify textview - PullRequest
0 голосов
/ 06 июня 2019

Мне нужно выделить weburl внутри textview.Чтобы добиться этого, я добавил атрибут android:autoLink="web" в свой текстовый xml.

Если URL-адрес связан с видео на YouTube, мне нужно воспроизвести его в активности игрока YouTube в моем приложении и для других типов URL-адресов, я хочу, чтобы оноткрыть в веб-браузере.Итак, как я могу определить, какой URL-адрес получить, кликнуть и найти, является ли это ссылкой на YouTube или нет, и выполнить перенаправление в соответствии с ним.

Ниже приведен пример текста, который мое текстовое представление содержит

.образец текста
Вы можете найти хорошую статью по этой ссылке
www.example.com
и есть хорошее видео, которое объясняет здесь
www.youtube.com/xyzpqr
для дальнейшего чтения, пожалуйста, загрузите pdfотсюда
www.example.com/pdf/xyz

имеется несколько ссылок, поэтому необходимо определить эту нажатую ссылку и выполнить действие преформы для выбранной ссылки.

Ответы [ 3 ]

0 голосов
/ 06 июня 2019

Пожалуйста, попробуйте ниже атрибут в вашем текстовом виде в xml файле:

        android:autoLink="all"
        android:linksClickable="false"
        android:textColorLink="#3393FF"

Вы можете проверить 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
            }
        }
    });

OR

ниже вы можете использовать библиотеку и ссылку: 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;
});
0 голосов
/ 06 июня 2019

Почему бы вам не использовать 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());
0 голосов
/ 06 июня 2019

Вы можете применить прослушиватель к TextView, а при обнаружении щелчка использовать метод Android с помощью StartsWith, чтобы определить, начинается ли URL-адрес с вас (URL-адрес YouTube), если он совпадает, выполняет ли ваш проигрыватель YouTube другие действия по перенаправлению

...