【发布时间】:2015-06-05 05:05:12
【问题描述】:
我一直在为许多拥有移动网站的公司开发混合应用程序。 事实上,有些网站是用jsp制作的。
我已经知道 iframe 和 javascripts xhr 请求不会触发 webViewClient 的 shouldOverrideUrlLoading 覆盖函数。我没问题。
但今天我了解到一些操作,例如:
- JSP 页面重定向
- JSP 页面中的链接点击次数
- JSP/JS 引发的 URL 加载
不会总是触发这个函数。
因此,shouldOverrideUrlLoading() 不会触发,当要求 webView 加载它无法加载的页面(即“intent://...”)时,它会显示错误页面。
有没有人遇到过这种行为,有没有解决办法?
下面是我用来调用活动的代码,其中 url 带有 'intent:' 协议(这将失败,因为执行上述操作时永远不会调用此函数)
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// ... omitted ...
if ( url.startsWith("intent:") ) {
Intent intent = null;
try {
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
// The following flags launch the app outside the current app
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
try {
getActivity().startActivity(intent);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
} catch (URISyntaxException e) {
e.printStackTrace();
}
return true;
}
}
ps。请注意,所有其他网站的页面加载都将完美调用 shouldOverrideUrlLoading()。 我在 android webViews 上找不到任何与 JSP 相关的错误,所以我要问一个。
ps。我很乐意提供一些有礼貌的读者会尝试的示例网站。但该网站是用韩文编写的,所以我怀疑它是否会有所帮助。
谢谢!
【问题讨论】:
标签: android jsp webview webviewclient