如何使用webview而不是外部手机浏览器在textview上创建自动链接打开网站链接

如何解决如何使用webview而不是外部手机浏览器在textview上创建自动链接打开网站链接

我有一个包含一些文本描述的活动和另一个包含 webview 的活动,webview 活动运行良好,文本活动运行良好。在我的 XML 中,我添加了 auto-link all 以使 textview 能够检测所有链接(电话号码、电子邮件、网络链接)。自动链接工作正常并正常打开链接类型(电话号码打开联系人,电子邮件打开邮件应用程序,网络链接打开外部浏览器)。 我需要的是让文本检测到网络链接,然后覆盖它以打开指向我的 webview 活动的网络链接,而不是外部手机浏览器。

Webview 活动

 if(savedInstanceState != null){
            webView.restoreState(savedInstanceState);
        } else {
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setSupportZoom(true);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.getSettings().setLoadWithOverviewmode(true);
            webView.getSettings().setUseWideViewPort(true);
            webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
            webView.setBackgroundColor(Color.WHITE);

            webView.setWebViewClient(new ourViewClient());

            webView.setWebChromeClient(new WebChromeClient(){
                @Override
                public void onProgressChanged(WebView view,int progress){
                    progressBar.setProgress(progress);
                    if(progress < 100 && progressBar.getVisibility() == progressBar.GONE){
                        progressBar.setVisibility(progressBar.VISIBLE);
                    }
                    if(progress == 100){
                        progressBar.setVisibility(progressBar.GONE);
                    }
                }
            });
        }

        webView.loadUrl(url);
    }

    public class ourViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view,String url){
            view.loadUrl(url);
            CookieManager.getInstance().setAcceptCookie(true);
            return true;

        }

        @Override
        public void onPageFinished(WebView view,String url){
            super.onPageFinished(view,url);
        }

    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        webView.saveState(outState);
    }

文本 XML

    <RelativeLayout
        android:layout_marginBottom="35dp"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:autoLink="all"
            android:textColor="@color/blue"
            android:padding="10dp"
            android:textSize="16sp"
            android:fontFamily="serif"
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dp"
            android:layout_marginEnd="5dp"
            android:layout_marginStart="5dp" />

    </RelativeLayout>

Textview 文本

desc.setText("Click Here To visit our Page >>> https://www.example.com");
   

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?