【问题标题】:Capturing back key press on PhoneGap for Android在 Android 的 PhoneGap 上捕获返回按键
【发布时间】:2011-04-18 05:46:43
【问题描述】:

我正在使用 PhoneGap 进行 Android 应用程序开发,但我一直无法捕捉设备上的后退按键!我尝试了其他线程和官方 wiki 页面的所有内容,但似乎没有一个有效! :(

我可以使用 keyEvent.menuTrigger 和 keyEvent.searchTrigger 捕获菜单和搜索键,但似乎无法捕获后退按钮按下!我类似地尝试了 keyEvent.backTrigger 但它没有用!为“backKeyDown”事件添加事件监听器也不起作用!

这是我的代码:

BackButton.override();
    document.addEventListener('backKeyDown', function(e) {
  console.log('Caught it!');
}, false);
keyEvent.searchTrigger= searchPressed;
keyEvent.menuTrigger=menuPressed;
keyEvent.backTrigger=backPressed;

控制台说:

Line 1 : Uncaught TypeError: Cannot call method 'backTrigger' of undefined

这是否意味着 something.backTrigger() 正在被调用,但对象 something 不存在。那是什么东西?或者有什么办法吗?

对 KeyEvent 也进行了同样的尝试,但没有成功! 请帮忙!

提前致谢! :)

【问题讨论】:

    标签: javascript android events cordova


    【解决方案1】:

    PhoneGap Wiki 有关 Android 按钮处理程序的页面已针对 PhoneGap 0.9.5 更新:

    // This is your app's init method. Here's an example of how to use it
    function init() {
        document.addEventListener("deviceready", onDR, false);
    } 
    
    function onDR(){
        document.addEventListener("backbutton", backKeyDown, true);
        //boot your app...
    }
    
    function backKeyDown() {
        // do something here if you wish
        // alert('go back!');
    }
    

    适用于 PhoneGap 0.9.6

    您还可以使用 menubuttonsearchbutton 事件处理其他按钮。

    【讨论】:

      【解决方案2】:

      如果您使用 2.0 以上的 api 级别,那么您可以覆盖以下功能

      @Override
      public void onBackPressed() {
      // do something on back.
      return;
      }
      

      用于跟踪后退按钮按下事件。

      如果没有,那么您可以覆盖活动的 onKeyDown 事件并追溯按钮

      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event)  {
          if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
              // do something on back.
              return true;
          }
      
          return super.onKeyDown(keyCode, event);
      } 
      

      【讨论】:

      • 第一件事 - Eclipse 说“KeyEvent 无法解析为类型”。我应该导入什么才能使其工作?第二 - 这个 Java 方法会向 Javascript 接口公开任何内容吗?我能听回 Javascript 上的按键吗,怎么样?感谢您的帮助!
      【解决方案3】:

      下面是我在 PhoneGap 中使用 xuijs 的方法:

      // inside your 'deviceready' handler
      if (device.platform == 'Android') {
          BackButton.override();
      
          // add backkeyDown handler
          x$(document).on('backKeyDown', onBackKeyDown);
      }
      
      // back button handler
      function onBackKeyDown() {
          // do something
          // or
          // BackButton.exitApp();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多