Android Webview onBackPressed处理历史记录

时间:2015-01-05 09:00:22

标签: android webview

我的应用正在使用WebView在网页之间导航。它包含注册表单页面,成功消息页面和登录表单页面。在用户按下成功消息页面上的登录按钮后,应用程序将在注册过程完成后继续登录页面,如下面的流程图所示。

enter image description here

当用户在登录表单上按下时,我想跳过导航回到成功消息页面,直接返回注册页面,有效地反转流程图并删除成功消息页面从中,如下面的修改流程图所示。

enter image description here

以下是我到目前为止所写的内容,但代码无法正常工作,因为当用户从登录页面进行回退时,它仍会导航到成功消息页面。

抱歉我的英语不好。

  HTML5WebView mWebView;


 public void onBackPressed() {


    if (mWebView.canGoBack()) {
        mWebView.hideCustomView();

       if(mWebView.getUrl().equals("Success message URL")){

           AlertDialog.Builder builder = new AlertDialog.Builder(this);
           builder.setMessage("Are you sure you want to exit?")
                   .setIcon(android.R.drawable.ic_dialog_alert)
                   .setTitle("Test App")
                   .setCancelable(false)
                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           notificationManager.cancel(NOTIFICATION_EX);
                           android.os.Process.killProcess(android.os.Process.myPid());
                           mWebView.clearCache(true);
                           mWebView.clearHistory();
                           finish();
                       }
                   })
                   .setNegativeButton("No", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           dialog.cancel();
                       }
                   });
           AlertDialog alert = builder.create();
           alert.show();
       }
    }


    else
    {
        mWebView.hideCustomView();
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Are you sure you want to exit?")
                .setIcon(android.R.drawable.ic_dialog_alert)
              .setTitle("Test App")
                .setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        notificationManager.cancel(NOTIFICATION_EX);
                        android.os.Process.killProcess(android.os.Process.myPid());
                        // This above line close correctly
                        mWebView.clearCache(true);
                        mWebView.clearHistory();
                        finish();
                    }
                })
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();
    }

}

0 个答案:

没有答案