Android - 禁用设备返回按钮

7

我正在使用PhoneGap开发Android应用程序。我需要通过以下代码处理设备的返回按钮功能:

 import com.phonegap.DroidGap;
 public Class MyClass extends DroidGap {
 appView.setOnKeyListener(new OnKeyListener() { 
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
                finish();
                return true;
            }
            return onKeyDown(keyCode, event); 
        } 
    });
  }

通过使用上面的代码,应用程序会退出,因为我使用了finish();但是我不希望在点击设备返回按钮时发生任何事情。我该怎么做?请帮助我。

3
取消结束通话,否则我无法理解你的问题。 - Stephane Mathis
1
@Tinus81,是的,我看了那个链接并实现为appView了。麻烦您能否检查一下我放置的代码? - Avadhani Y
@g00dy 我正在使用未经root的设备... 但它仍然无法工作... - Avadhani Y
@AvadhaniY - 你想让返回按钮“无法使用”- 对吗?这是默认情况下不可能的。您可以控制其行为-如果按下返回键,则会再次加载相同的aActivity,具有相同的视图等。您无法禁用此按钮!但是,按键仅从Activity中受控(调用),因此您可以从那里开始。 - g00dy
在if条件中再次保持if(appView.canGoBack()){appView.goBack(); return whaturequired;}它并尝试... - Harish
显示剩余10条评论
1个回答

23

为什么你需要在Java层面做这个?你可以使用Phonegap的Event API通过Javascript实现此功能。

document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(e) {
  e.preventDefault();
}

1
是的,我知道如何使用Phonegap来做...但问题是服务器上有数百个HTML页面,我没有机会处理/修改HTML内容...所以,我正在尝试在Java层面完成它。无论如何,我能通过Java实现吗? - Avadhani Y
2
e.preventDefault(); 不起作用。我试图从 Android 设备的返回按钮中删除默认事件,我尝试了上面的代码,但没有运气,应用程序仍然从上一页返回。 - GianFS
1
这段代码必须放在“deviceready”事件监听器中。如果您直接将其编写到HTML中,请检查default-src中是否有“unsafe-inline”,以允许JavaScript内联。 - Honza
不要使用e.preventDefault,而应该使用return false。根据我的经验,调用e.preventDefault会导致Angular中的所有后续事件被阻止。这很奇怪,但是return false会产生预期的结果。 - sean.boyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接