如何在android中禁用webview的后退按钮?

如何在android中禁用webview的后退按钮?,android,webview,Android,Webview,如何在android中禁用webview的后退按钮 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (wv1 != null && (keyCode == KeyEvent.KEYCODE_BACK) && wv1.canGoBack() ) { wv1.goBack(); }

如何在android中禁用webview的后退按钮

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
     if (wv1 != null && (keyCode == KeyEvent.KEYCODE_BACK)
                     && wv1.canGoBack() )
     {

        wv1.goBack();
    }

    return true;
}

您已在“活动”中添加以下代码,以禁用“活动”返回按

@Override
public void onBackPressed() {

}

如果要在
WebView
可见时禁用后退按钮操作,并在
WebView
不可见时启用后退按钮操作,请在活动中尝试以下代码

@Override
public void onBackPressed() {
   if(webview.getVisibility()==View.VISIBLE){
      // dont pass back button action
      if(webview.canGoBack()){
         webview.goBack();
      }
      return;
   }else{
      // pass back button action
      super.onBackPressed();
   }
}

只需重写onBackPressed()方法

请试试这个

   @Override
public void onBackPressed() {
      if(webview.canGoBack()){
         webview.goBack();
      }
    else{
      super.onBackPressed();
   }
}

有很多方法可以做到这一点

解决方案1,覆盖dispatchKeyEvent()

dispatchKeyEvent()(API级别1,Android 1.0)

参考我的答案


解决方案2,覆盖onBackPressed()

onBackPressed()(API级别5,Android 2.0)


解决方案3,覆盖onKeyDown()

onKeyDown()(API级别1,Android 1.0)


请提供更多的信息。你想要实现什么?我没有理解您的要求。Web视图是否始终可见?您可以覆盖以下方法之一
dispatchKeyEvent
onBackPressed
onKeyDown
。有关详细信息,请参阅。我希望浏览器在用户按下后退键后不执行默认的后退操作。相反,JavaScript获得一个键事件(
document.onkeydown
和keyCode=8)。这是可能的吗?@fortream我认为这是可能的,您需要首先确保js事件或java事件。您还可以在js和java代码之间传递click事件。通常,我希望向webview传递任何值的keycode,例如keycode
-1
/
-2
或其他值。也就是说,触发器
document.onkeydown/onkeypress/onkeypup
不错!对我来说,我从来都不希望webview“窃取”后退按钮,所以在
public void onBackPressed()
中,我只有一行
super.onBackPressed()
   @Override
public void onBackPressed() {
      if(webview.canGoBack()){
         webview.goBack();
      }
    else{
      super.onBackPressed();
   }
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.dispatchKeyEvent(event);
}
@Override
public void onBackPressed() {
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
     //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
     return true;
     }
     return super.onKeyDown(keyCode, event);    
}
Add this below code in java file : 

WebView mwebView;
Button backButton1;

  backButton1 = findViewById(R.id.backButton1);
 mwebView = findViewById(R.id.mwebView);

backButton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mWebView.destroy();
            }
        });