开发环境:
Android Studio,cordova版本5.3.3
问题描述:
经过代码测试发现,menubutton事件绑定后点击无效果
问题分析:
不知道出于什么原因,代码里面并未添加menubutton的注册代码
问题解决:
从按钮点击事件来看, volumedownbutton,volumeupbutton,backbutton,menubutton事件都是一样的,但是CoreAndroid实现上把返回键与音量加减键区分开,注册方法分别为overrideBackbutton和overridebutton方法。接下来我简单地把menubutton用音量加减的方式进行修改。
修改1:CoreAndroid.java
-
public void overrideButton(String button, boolean override) {
-
LOG.i( "App", "WARNING: Volume Button Default Behavior will be overridden. The volume event will be fired!");
-
if (button.equals( "volumeup")) {
-
webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_UP, override);
-
}
-
else if (button.equals( "volumedown")) {
-
webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_DOWN, override);
-
}
-
else if (button.equals( "menu")) {
-
webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_MENU, override);
-
}
-
}
-
-
public void setButtonPlumbedToJs(int keyCode, boolean override) {
-
switch (keyCode) {
-
case KeyEvent.KEYCODE_VOLUME_DOWN:
-
case KeyEvent.KEYCODE_VOLUME_UP:
-
case KeyEvent.KEYCODE_BACK:
-
case KeyEvent.KEYCODE_MENU:
-
// TODO: Why are search and menu buttons handled separately?
-
if (override) {
-
boundKeyCodes.add(keyCode);
-
} else {
-
boundKeyCodes.remove(keyCode);
-
}
-
return;
-
default:
-
throw new IllegalArgumentException( "Unsupported keycode: " + keyCode);
-
}
-
}
-
// Add hardware MENU and SEARCH button handlers
-
//cordova.addDocumentEventHandler('menubutton');
-
cordova.addDocumentEventHandler( 'searchbutton');
-
-
function bindButtonChannel(buttonName) {
-
// generic button bind used for volumeup/volumedown buttons
-
var volumeButtonChannel = cordova.addDocumentEventHandler(buttonName + 'button');
-
volumeButtonChannel.onHasSubscribersChange = function() {
-
exec( null, null, APP_PLUGIN_NAME, "overrideButton", [buttonName, this.numHandlers == 1]);
-
};
-
}
-
// Inject a listener for the volume buttons on the document.
-
bindButtonChannel( 'volumeup');
-
bindButtonChannel( 'volumedown');
-
bindButtonChannel( 'menu');
使用方法同volumeup和volumedown一致:
-
document.addEventListener( 'deviceready', function(){
-
document.addEventListener( 'menubutton',menuKeyDown, false);
-
}, false);
-
-
function menuKeyDown(){
-
alert( 'menuKeyDown');
-
}
文章转载自:https://blog.youkuaiyun.com/wang_song_yan/article/details/50205803#commentBox
原作者:wang_song_yan