如何在android中禁用webview的后退按钮?
如何在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(); }
@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();
}
});