画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

TextViewに表示されているURLをWebViewで開く

TextViewのURLを自動的にリンクにしてくれるのは簡単だった。

<TextView
    android:id="@+id/hoge"
    android:autoLink="web" />

こんな感じでautoLink="web"をつけたらリンクにしてくれた。

しかし、このままだとインストールされているブラウザで開こうとする。 これをwebviewで開く時にどうすればいいの? というのがよくわからなかった。

いろいろググっていくと、以下のqiitaが見つかる。

qiita.com

LinkMovementMethodを拡張している。 このページにあるようなMutableLinkMovementMethodを作って、 以下のようにすればリンクをクリックしたらwebviewで見れるようになった。

TextView hoge = (TextView) v.findViewById(R.id.hoge);
MutableLinkMovementMethod mutableLinkMovementMethod = new MutableLinkMovementMethod();
mutableLinkMovementMethod.setOnUrlClickListener(new MutableLinkMovementMethod.OnUrlClickListener() {
    @Override
    public void onUrlClick(TextView widget, Uri uri) {
        Intent intent = new Intent(widget.getContext(), MyWebViewActivity.class);
        intent.putExtra("WEBVIEW_URL", String.valueOf(uri));
        widget.getContext().startActivity(intent);
    }
});
hoge.setMovementMethod(mutableLinkMovementMethod);

MyWebViewActivityというWebViewを表示するためのActivityは作っておきます

もっといい感じの方法はないのかなぁと思うけどないからこういうハックをしてるのかー。 と思った今日このごろ。