注销 Web 应用程序时从 Webview 返回应用程序

Returning to App from Webview on logout of web application

我粘贴了一小段代码,允许用户点击 webview 和 return 回到我的登录应用程序。 webview 中的 Web 应用程序只有在 webview 中运行的 Web 应用程序中单击注销时才应执行此操作。换句话说,它不应该 return 到登录应用程序只是因为他们点击了 webview 中的某个地方。

我已经尝试使用 onPageStarted 进行此操作,但无法正常工作。它要求 3 个参数,Android Studio 甚至不会编译它。这可能是我尝试调用它的方式,因为在阅读文档后我不太了解如何调用该方法。

此外,我尝试创建一个名为 myWebClient 的私有 class 来调用 onPageStarted,但似乎无法在我的 MainActivity 中正确调用那个.

这是工作代码,在 web 视图中单击任何按钮时,它都会将我带回我的应用程序。

webView.setOnTouchListener(new View.OnTouchListener() {
        String checkurl;

        public boolean onTouch(View v, MotionEvent e) {

        Intent intent = new Intent(context, MainActivity.class); 
        startActivity(intent); 
        Toast.makeText(getApplicationContext(), checkurl, Toast.LENGTH_LONG).show();

        return false;
        }

        });

以下是我尝试过但没有用的方法。

webView.setOnTouchListener(new View.OnTouchListener() {
            String checkurl;
            public boolean onTouch(View v, MotionEvent e) {
                public void onPageStarted( WebView view, String url, Bitmap favicon){
                    if (checkurl == "mylogoutURLgoes here") {

                        Intent intent = new Intent(context, MainActivity.class); 
                        startActivity(intent); 
                    }
                    super.onPageStarted(webView, url, favicon);
                }
                Toast.makeText(getApplicationContext(), checkurl, Toast.LENGTH_LONG).show();

            }

        });

可能这就是您要找的:

webView.setWebViewClient(new WebViewClient(){
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        if ("myLogoutUrl".equals(url)){
            //do stuff
        }
        super.onPageStarted(view, url, favicon);
    }
});

另一种解决方案是添加 Javascript 接口与代码通信。

这篇 post 应该会引导您朝着正确的方向前进。 Detect click on HTML button through javascript in Android WebView

您需要在 Java 中创建按钮并在您的网络应用程序中添加 javascript 界面组件来处理它们。