【问题标题】:Android - Disable Device Back buttonAndroid - 禁用设备返回按钮
【发布时间】:2013-07-26 08:47:13
【问题描述】:

我正在使用 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(); 但我不希望在单击设备后退按钮时不会发生任何事情。我怎样才能做到这一点?请帮帮我。

【问题讨论】:

  • 删除完成调用,否则我不明白你的问题...
  • 后退按钮无法在无根设备上禁用,安全问题..
  • @Tinus81 是的,我点击了那个链接并实现为appView.. 你能检查一下我放置的代码吗??
  • 你试过删除finish()并返回false吗?

标签: android cordova back-button


【解决方案1】:

为什么需要在 Java 级别执行此操作?您可以使用 Phonegap 的 Event API 使用 Javascript 来实现这一点

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

【讨论】:

  • 是的,我知道如何使用 Phonegap... 但问题是服务器中有 100 个 HTML 页面,我没有机会处理/修改 HTML 内容.. 所以,我正在尝试在 Java 级别完成它.. 无论如何我都无法通过 Java...?
  • e.preventDefault();不管用。我正在尝试从 android 设备后退按钮中删除默认事件,我尝试了上面的代码,但没有运气应用程序仍然从上一页返回
  • 此代码必须在“deviceready”事件监听器中。如果您直接将其写入 HTML,还要检查您是否在 default-src 中有“unsafe-inline”以允许 javascript 内联。
  • 您应该使用return false,而不是e.preventDefault。以我的经验,调用e.preventDefault 将阻止Angular 中的所有进一步事件。这很奇怪,但return false 有预期的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多