使用shouldOverrideUrlLoading来处理Android WebView上的命令

时间:2016-01-30 03:20:09

标签: android webview

我是Android新手,我正在开发一个简单的WebView应用程序。 我正在使用 shouldOverrideUrlLoading 来处理从我的远程HTML到Android的一些命令。

public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(!url.startsWith("https://www.mywebsite.com)) {
    switch (url) {
        case "mycmd://app_logoff":
            Toast.makeText(context, getString(R.string.logoff_ok), Toast.LENGTH_SHORT).show();
            appLogoff();
            break;

        default:
            view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(urlWeb)));
    }
}

return true;

我在我的Android设备(摩托罗拉X Play)上进行了测试,效果很好!是否可以肯定这将适用于所有符合应用程序最低API级别的Android设备?这是一个好习惯吗?

2 个答案:

答案 0 :(得分:0)

由于您使用shouldOverrideUrlLoading表示您正在实施自定义WebViewClientshouldOverrideUrlLoading应该让您的应用有机会在新网址即将加载时接管控件当前的WebView。

根据开发人员documentation,此API在 API Level 1 中添加,因此基本上意味着它支持很长时间,并且不应该是最低API级别的问题。< / p>

我想没有人可以确定它会在所有设备上工作或不工作,除非对它们进行实际测试。您可能希望使用具有不同配置的Android模拟器测试它们,例如不同的SDK /平台,API级别等,以确保双重确认。

作为旁注和警告,对于使用 POST &#34;方法&#34;的请求,不会调用此方法。

答案 1 :(得分:-1)

来自webview android exapmle,使用了shouldOverrideUrlLoading。 但是,自api 24以来它已被弃用。

boolean shouldOverrideUrlLoading (WebView view, String url)

带有新参数的新替换API就在这里。

boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)