我是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设备?这是一个好习惯吗?
答案 0 :(得分:0)
由于您使用shouldOverrideUrlLoading
表示您正在实施自定义WebViewClient
,shouldOverrideUrlLoading
应该让您的应用有机会在新网址即将加载时接管控件当前的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)