在shouldOverrideUrlLoading

时间:2018-05-18 13:27:50

标签: android angularjs hybrid-mobile-app webviewclient

我一直在研究混合Android应用程序。目前,我们的应用程序中的WebView指向AngularJS 1.5.7应用程序。当用户点击改变路径的应用程序内部的按钮时,我期望在我的WebViewClient内部调用shouldOverrideUrlLoading函数。然而,这种情况并非如此。似乎shouldOverrideUrlLoading不会受到Angualar路线变化的影响。

在这种情况下,我已经走了下面的兔子洞:

  1. 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);
            }
        }`
    
  2. shouldInterceptRequest - 覆盖此功能可让您查看请求。但是,当请求从A​​ngularJS应用程序发出时,Web视图再次显示新路由,提供了不稳定的用户体验。

  3. onLoadResource - 相同

  4. JavaScriptInterface - 目前我已经设置了一个JavaScript接口来监视window.location更改。这似乎比上述任何选项更快地捕捉路线变化,但是,仍然可以看到我不想去的网页快速闪烁。您可以在post

  5. 上找到如何进行Javascript桥接的方法

    任何建议都将不胜感激!感谢。

0 个答案:

没有答案