代码之家  ›  专栏  ›  技术社区  ›  yogsma

返回到sslerrorhandler上的上一个屏幕

  •  2
  • yogsma  · 技术社区  · 6 年前

    因此,在我的webview中,我显示了一个错误对话框,用于解决google强制要求的ssl安全问题。代码如下所示:

            @Override
            public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error)
            {
               final AlertDialog.Builder builder = new AlertDialog.Builder(LaunchWVActivity.this);              
               builder.setMessage("SSL cert is invalid.Install a valid certificate or click continue to proceed.");
               builder.setPositiveButton("continue", new DialogInterface.OnClickListener() 
               {                    
                        @Override
                        public void onClick(DialogInterface dialog, int which) 
                        {
                            handler.proceed();                  
                        }
                });
                builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() 
                    {                   
                        @Override
                        public void onClick(DialogInterface dialog, int which) 
                        {                           
                            handler.cancel();                           
                        }
                });
                final AlertDialog dialog = builder.create();    
                dialog.show();
    }
    

    当用户点击 cancel ,我的网络视图只是停留在白色屏幕的同一屏幕上。我想导航用户到上一个屏幕从他来自哪里。我试过加一个 onCancelListener ,但没有成功。

    像这样的东西

    dialog.setCancelable(true);
    dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
         @Override
         public void onCancel(DialogInterface dialog) {
               // dialog dismiss without button press
                Log.d(TAG,"Cancel pressed");
                webview.goBack();
    }}); 
    

    我错过了什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   yogsma    6 年前

    我解决了这个问题。完成目前的活动是非常直接的方法。最初我没有意识到,我可以有我目前的活动作为全球宣布。

     builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() 
                    {                   
                        @Override
                        public void onClick(DialogInterface dialog, int which) 
                        {                           
                            handler.cancel(); 
                            currentActivity.finish();                          
                        }
                });