如何从文本视图链接内部打开 Web 视图中的 URL



我正在Web Data,我正在textView上设置它。Ih 网络数据,有网址。我想点击给定的url,它应该在ApplicationWebView 内打开。但它的推出new browser.请指导我。我所做的就在这里,

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);
}
**

我传递带有意图的网址的网络活动是 **

@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);
}

}

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

webView.loadURL(textViewValue);
webView.setWebViewClient(new WebViewClient());

WebView客户端将在应用程序Web视图本身中打开URL,不会打开任何外部浏览器

最新更新