我一直在研究混合Android应用程序。目前,我们的应用程序中的WebView指向AngularJS 1.5.7应用程序。当用户点击改变路径的应用程序内部的按钮时,我期望在我的WebViewClient内部调用shouldOverrideUrlLoading函数。然而,这种情况并非如此。似乎shouldOverrideUrlLoading不会受到Angualar路线变化的影响。
在这种情况下,我已经走了下面的兔子洞:
onPageFinished - 在WebViewClient中覆盖此函数可以正常工作,但是在新路由被命中之后才会调用它。这增加了应用程序的加载时间并创造了不稳定的体验。 `@Override public void onPageFinished(WebView视图,String url){
if (url.endsWith("/#/")) {
signOut();
} else if (url.endsWith("/login")) {
// TODO: show some sort of failure message?
Log.i("Login Route", "The webview just attempted to go to the login route.");
signOut();
} else if (url.endsWith("/security")) {
Intent intent = new Intent(getApplicationContext(), SecurityActivity.class);
startActivity(intent);
}
}`
shouldInterceptRequest - 覆盖此功能可让您查看请求。但是,当请求从AngularJS应用程序发出时,Web视图再次显示新路由,提供了不稳定的用户体验。
onLoadResource - 相同
JavaScriptInterface - 目前我已经设置了一个JavaScript接口来监视window.location更改。这似乎比上述任何选项更快地捕捉路线变化,但是,仍然可以看到我不想去的网页快速闪烁。您可以在post
任何建议都将不胜感激!感谢。