单击textview中的链接后,如何在webview中打开该链接而不是默认浏览器?

时间:2014-06-16 05:48:20

标签: android android-activity textview android-webview

我有一个文字视图。我有这样的文字"你可以访问:http://www.google.com"。单击此链接后,应在Webview中打开它,而不是默认浏览器。我的代码是:

// MainActivity.java

link = (TextView) findViewById(R.id.textView);
link.setText("You may visit here : http://www.google.com");
link.setMovementMethod(LinkMovementMethod.getInstance());

//清单

<activity
            android:name="com.xpointers.xpmediaapp.mediaapp.WebViewActivity"
            android:label="@string/app_name">
            <intent-filter>

                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="android.intent.action.VIEW" />

            </intent-filter>
        </activity>

我尝试使用此链接:handle textview link click in my android app但未能理解我应该在WebviewActivity中写什么?

3 个答案:

答案 0 :(得分:9)

需要解决以下问题:

链接TextView 找到一种方法来收听TextView中链接的单击 获取所单击链接的URL并将其加载到WebView中 可选:使TextView可单击而不会失去选择文本的能力 可选:处理TextView中的格式化文本(不同的文本大小和样式)

1链接TextView

String text = "These are some sample links:\nwww.google.com\nwww.facebook.com\nwww.yahoo.com";
Spannable spannable = new SpannableString( Html.fromHtml(text) );
Linkify.addLinks(spannable, Linkify.WEB_URLS);

2 +#3收听点击链接并在WebView

中打开它们
URLSpan[] spans = spannable.getSpans(0, spannable.length(), URLSpan.class);
for (URLSpan urlSpan : spans) {
    LinkSpan linkSpan = new LinkSpan(urlSpan.getURL());
    int spanStart = spannable.getSpanStart(urlSpan);
    int spanEnd = spannable.getSpanEnd(urlSpan);
    spannable.setSpan(linkSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.removeSpan(urlSpan);
}

开放新活动:

 private class LinkSpan extends URLSpan {
        private LinkSpan(String url) {
            super(url);
        }

        @Override
        public void onClick(View view) {
            String url = getURL();
            if (url != null) {


                startActivity(new Intent(LinkTestActivity.this,WebViewActivity.class).putExtra("url",url));

            }
        }
    }

并在网页浏览中记录网址。

有关详情,请参阅以下链接: -

Open URL in WebView instead of default Browser

答案 1 :(得分:1)

截至您发布的链接,您应该在Manifest文件中声明您的某些活动可以打开链接。单击此类链接后,您的活动将被打开,因此您应将启动模式设置为singleTop。然后,您可以收到新的意图并在Webview中显示它们。 onNewIntent: http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)

此示例是关于实现搜索,因此您可以跳到“singleTop”部分: http://developer.android.com/guide/topics/search/search-dialog.html

答案 2 :(得分:0)

将此代码放在link.setText(--url--);

之后
((TextView) findViewById(R.id.textView)).setOnClickListener(
    new OnClickListener() {
        @Override
        public void onClick(View v) {
            String url = ((TextView) findViewById(R.id.account_title))
                .getText().toString();
            WebView webView = (WebView) findViewById(R.id.wv);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl(url);
        }
    }
);

在相关的xml文件中创建一个webview,如下所示:

<WebView android:id="@+id/wv"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />

那是...... 如果您仍然遇到问题,请告诉我。