如何在 WebView 中将 chrome 版本的 webview 设置为默认版本

How to set chrome version of webview as default in WebView

我试过这段代码,效果很好,但我的网站在默认浏览器中打开。我想将其更改为 chrome,因为我的网站与 chrome 更兼容,我在这里看到损坏的链接。我该怎么做?

public class MainActivity extends AppCompatActivity {
    private WebView mywebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mywebView = (WebView) findViewById(R.id.webview);
        mywebView.setWebViewClient(new WebViewClient());
        mywebView.loadUrl("https://******.com/");
        WebSettings webSettings = mywebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
    }

    public class mywebClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    @Override
    public void onBackPressed() {
        if(mywebView.canGoBack()) {
            mywebView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

WebView 是您放置在您的一项活动的 UI 中的小部件。它不是默认浏览器。

您正在 WebView 上调用 loadUrl(),如果它调出默认浏览器,那是因为 Web 服务器正在发出重定向。 如果您现在 运行 应用程序的站点有一个像 html5rocks.com 这样的重定向,您的应用程序最终会在设备上的浏览器中打开该站点,而不是在您的 WebView 中——这可能不是您所期望的。这是因为 WebView 处理导航事件的方式。

事件顺序如下:

1-WebView 尝试从远程服务器加载原始 URL,并重定向到新的 URL。

2-WebView 检查系统是否可以处理 URL 的视图意图,如果可以,系统将处理 URL 导航,否则 WebView 将在内部导航(即用户有他们的设备上没有安装浏览器)。

3-系统选择用户首选的应用程序来处理 http:// URL 方案——即用户的默认浏览器。如果您安装了多个浏览器,此时您可能会看到一个对话框。

如果您在 Android 应用程序中使用 WebView 来显示一些简单的 Web 内容(例如,帮助页面),这可能正是您想要做的。但是,对于更复杂的应用程序,您可能希望自己处理导航链接。

要处理 WebView 内的导航,您需要覆盖 WebView 的 WebViewClient,它处理 WebView 生成的各种事件。你已经这样做了

 mywebView.setWebViewClient(new WebViewClient());

这是向前迈出的一大步,但是如果您只想处理您网站的链接,同时在浏览器中打开其他 URL 怎么办?

为此,您需要扩展 WebViewClient class 并实施 shouldOverrideUrlLoading 方法。只要 WebView 尝试导航到不同的 URL,就会调用此方法。如果它 returns 为假,WebView 将自己打开 URL。 (默认实现总是 returns false,这就是它在您的代码中起作用的原因。)

现在您知道如何让用户看到您应用程序上的所有页面,但是如果您希望 webview 看起来像 chrome 并使用 chrome java 脚本引擎 您可以使用 Chrome 自定义标签在您的应用程序中打开 chrome 标签 Chrome 自定义选项卡允许应用自定义 Chrome 的外观和感觉。应用程序可以更改以下内容:

工具栏颜色 进入和退出动画 向 Chrome 工具栏、溢出菜单和底部工具栏添加自定义操作 如果您在应用程序中托管自己的内容,WebView 是一个很好的解决方案。如果您的应用将用户引导至您域外的 URL,我建议您使用 Chrome 自定义标签 https://github.com/GoogleChrome/custom-tabs-client 提供了完整的示例。它包含 re-usable classes 来自定义 UI,