Android 如何从TextView链接内部打开WebView中的URL?

Android 如何从TextView链接内部打开WebView中的URL?,android,android-webview,Android,Android Webview,我正在获取Web数据,我正在将其设置为textView。Ih网络数据,有url。我想点击给定的url,它应该在应用程序,网络视图中打开。但它推出了新浏览器。请引导我。我所做的就是在这里 private void setTextViewHTML(TextView type_1_bodyTxt, String main_hrml) { CharSequence sequence = Html.fromHtml(main_hrml); SpannableStringBuilder st

我正在获取
Web数据
,我正在将其设置为
textView
。Ih网络数据,有url。我想点击给定的
url
,它应该在
应用程序
网络视图
中打开。但它推出了新浏览器。请引导我。我所做的就是在这里

private void setTextViewHTML(TextView type_1_bodyTxt, String main_hrml) {
    CharSequence sequence = Html.fromHtml(main_hrml);
    SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
    URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);
    for (URLSpan span : urls) {
        makeLinkClickable(strBuilder, span);
    }

    if (main_hrml.contains("<p>")){
        if (!main_hrml.contains("<ul")) {
            GetDeviceResolution getDeviceResolution = new GetDeviceResolution((Demo) context);
            type_1_bodyTxt.setPadding(0, 0, 0, -(int) (getDeviceResolution.setHeight(0.06)));
        }else{
            GetDeviceResolution getDeviceResolution = new GetDeviceResolution((Demo) context);
            type_1_bodyTxt.setPadding(0, 0, 0, -(int) (getDeviceResolution.setHeight(0.02)));
        }
    }
    type_1_bodyTxt.setText(strBuilder);
    type_1_bodyTxt.setLinkTextColor(Color.RED);


    removeLine(type_1_bodyTxt, main_hrml);
    type_1_bodyTxt.setMovementMethod(LinkMovementMethod.getInstance());
}

private void removeLine(TextView type_1_bodyTxt, String content){
    Spannable s = (Spannable) Html.fromHtml(content);
    for (URLSpan u: s.getSpans(0, s.length(), URLSpan.class)) {
        s.setSpan(new UnderlineSpan() {
            public void updateDrawState(TextPaint tp) {
                tp.setUnderlineText(false);
            }
        }, s.getSpanStart(u), s.getSpanEnd(u), 0);
    }

    type_1_bodyTxt.setText(s);
}



private void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span) {
    int start = strBuilder.getSpanStart(span);
    int end = strBuilder.getSpanEnd(span);
    int flags = strBuilder.getSpanFlags(span);
    ClickableSpan clickable = new ClickableSpan() {
        public void onClick(View view) {
            // Do something with span.getURL() to handle the link click...
            Intent intent = new Intent(context, WebViewActivity.class);
            intent.putExtra("url", span.getURL());
            context.startActivity(intent);
        }
    };
    strBuilder.setSpan(clickable, start, end, flags);
    strBuilder.removeSpan(span);
}

}

当您单击具有链接的textview时,您必须打开具有webview的活动并加载您在textview上的URL

webView.loadURL(textViewValue);
setWebViewClient(新的WebViewClient());

WebViewClient将在应用程序中打开URL webview本身,不会打开任何外部浏览器

同时显示webview活动。与thas bro不同。。实际上,这里是textView中的下划线。。现在,当我点击它时,它会打开我的网络视图,一切都很完美,但当我删除下划线时,这个调用浏览器。。单击事件未触发。如果不需要,请在textview上添加onClickListener()underline@Override公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){WebView.loadUrl(url);返回true;}让我们来看看。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.astrolabe_web_link);

    loadUrl = getIntent().getStringExtra("url");
    WebView webview = (WebView) findViewById(R.id.webView);
    ImageView webClose = (ImageView) findViewById(R.id.webClose);
    loadUrl = getIntent().getStringExtra("url");
    if (loadUrl == null) {
    }

    webview.getSettings().setAppCacheEnabled(true);
    webview.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setDefaultTextEncodingName("utf-8");
    webview.getSettings().setLoadsImagesAutomatically(true);
    webview.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {

        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return super.shouldOverrideUrlLoading(view, url); // return false;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
        }
    });
    webClose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();
        }
    });
    webview.loadUrl(loadUrl);
}