Android TextView с интерактивными ссылками: как захватывать клики?

У меня есть TextView, который отображает базовый HTML, содержащий 2+ ссылки. Мне нужно захватывать клики по ссылкам и открывать ссылки - в моем собственном внутреннем WebView (не в браузере по умолчанию).

Наиболее распространенный метод обработки рендеринга ссылок выглядит следующим образом:

String str_links = "<a href='http://google.com'>Google</a><br /><a href='http://facebook.com'>Facebook</a>";
text_view.setLinksClickable(true);
text_view.setMovementMethod(LinkMovementMethod.getInstance());
text_view.setText( Html.fromHtml( str_links ) );

Однако это приводит к тому, что ссылки открываются во внутреннем веб-браузере по умолчанию (отображается диалоговое окно «Выполнить действие с помощью ...»).

Я пытался реализовать onClickListener, который правильно запускается при нажатии на ссылку, но я не знаю, как определить, ПОЧЕМУ ссылка была нажата ...

text_view.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
        // what now...?
    }

});

В качестве альтернативы я попытался создать собственный класс LinkMovementMethod и реализовать onTouchEvent ...

public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {
    String url = text.toString();
    // this doesn't work because the text is not necessarily a URL, or even a single link... 
    // eg, I don't know how to extract the clicked link from the greater paragraph of text
    return false;
}

Идеи?

Example solution

Я придумалрешение который анализирует ссылки из строки HTML и делает их кликабельными, а затем позволяет вам ответить на URL.

Ответы на вопрос(6)

Ваш ответ на вопрос