mirror of
https://github.com/apache/cordova-android.git
synced 2025-05-13 14:51:40 +08:00
CB-7018 Clean up and deprecation of some button-related functions
This commit is contained in:
parent
58afd0b604
commit
4b4a2e9f9e
@ -32,6 +32,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
@ -217,7 +218,7 @@ public class App extends CordovaPlugin {
|
|||||||
*/
|
*/
|
||||||
public void overrideBackbutton(boolean override) {
|
public void overrideBackbutton(boolean override) {
|
||||||
LOG.i("App", "WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired!");
|
LOG.i("App", "WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired!");
|
||||||
webView.bindButton(override);
|
webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_BACK, override);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -229,7 +230,12 @@ public class App extends CordovaPlugin {
|
|||||||
*/
|
*/
|
||||||
public void overrideButton(String button, boolean override) {
|
public void overrideButton(String button, boolean override) {
|
||||||
LOG.i("App", "WARNING: Volume Button Default Behavior will be overridden. The volume event will be fired!");
|
LOG.i("App", "WARNING: Volume Button Default Behavior will be overridden. The volume event will be fired!");
|
||||||
webView.bindButton(button, override);
|
if (button.equals("volumeup")) {
|
||||||
|
webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_UP, override);
|
||||||
|
}
|
||||||
|
else if (button.equals("volumedown")) {
|
||||||
|
webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_DOWN, override);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -238,7 +244,7 @@ public class App extends CordovaPlugin {
|
|||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public boolean isBackbuttonOverridden() {
|
public boolean isBackbuttonOverridden() {
|
||||||
return webView.isBackButtonBound();
|
return webView.isButtonPlumbedToJs(KeyEvent.KEYCODE_BACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,8 +21,8 @@ package org.apache.cordova;
|
|||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.apache.cordova.Config;
|
import org.apache.cordova.Config;
|
||||||
@ -70,8 +70,7 @@ public class CordovaWebView extends WebView {
|
|||||||
public static final String TAG = "CordovaWebView";
|
public static final String TAG = "CordovaWebView";
|
||||||
public static final String CORDOVA_VERSION = "3.6.0-dev";
|
public static final String CORDOVA_VERSION = "3.6.0-dev";
|
||||||
|
|
||||||
private ArrayList<Integer> keyDownCodes = new ArrayList<Integer>();
|
private HashSet<Integer> boundKeyCodes = new HashSet<Integer>();
|
||||||
private ArrayList<Integer> keyUpCodes = new ArrayList<Integer>();
|
|
||||||
|
|
||||||
public PluginManager pluginManager;
|
public PluginManager pluginManager;
|
||||||
private boolean paused;
|
private boolean paused;
|
||||||
@ -90,10 +89,6 @@ public class CordovaWebView extends WebView {
|
|||||||
// Flag to track that a loadUrl timeout occurred
|
// Flag to track that a loadUrl timeout occurred
|
||||||
int loadUrlTimeout = 0;
|
int loadUrlTimeout = 0;
|
||||||
|
|
||||||
private boolean bound;
|
|
||||||
|
|
||||||
private boolean handleButton = false;
|
|
||||||
|
|
||||||
private long lastMenuEventTime = 0;
|
private long lastMenuEventTime = 0;
|
||||||
|
|
||||||
NativeToJsMessageQueue jsMessageQueue;
|
NativeToJsMessageQueue jsMessageQueue;
|
||||||
@ -705,23 +700,17 @@ public class CordovaWebView extends WebView {
|
|||||||
return p.toString();
|
return p.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* onKeyDown
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyDown(int keyCode, KeyEvent event)
|
public boolean onKeyDown(int keyCode, KeyEvent event)
|
||||||
{
|
{
|
||||||
if(keyDownCodes.contains(keyCode))
|
if(boundKeyCodes.contains(keyCode))
|
||||||
{
|
{
|
||||||
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
|
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
|
||||||
// only override default behavior is event bound
|
|
||||||
LOG.d(TAG, "Down Key Hit");
|
|
||||||
this.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');");
|
this.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// If volumeup key
|
// If volumeup key
|
||||||
else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
|
else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
|
||||||
LOG.d(TAG, "Up Key Hit");
|
|
||||||
this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');");
|
this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -732,7 +721,7 @@ public class CordovaWebView extends WebView {
|
|||||||
}
|
}
|
||||||
else if(keyCode == KeyEvent.KEYCODE_BACK)
|
else if(keyCode == KeyEvent.KEYCODE_BACK)
|
||||||
{
|
{
|
||||||
return !(this.startOfHistory()) || this.bound;
|
return !(this.startOfHistory()) || isButtonPlumbedToJs(KeyEvent.KEYCODE_BACK);
|
||||||
}
|
}
|
||||||
else if(keyCode == KeyEvent.KEYCODE_MENU)
|
else if(keyCode == KeyEvent.KEYCODE_MENU)
|
||||||
{
|
{
|
||||||
@ -749,10 +738,8 @@ public class CordovaWebView extends WebView {
|
|||||||
return super.onKeyDown(keyCode, event);
|
return super.onKeyDown(keyCode, event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onKeyDown(keyCode, event);
|
return super.onKeyDown(keyCode, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onKeyUp(int keyCode, KeyEvent event)
|
public boolean onKeyUp(int keyCode, KeyEvent event)
|
||||||
@ -762,10 +749,11 @@ public class CordovaWebView extends WebView {
|
|||||||
// A custom view is currently displayed (e.g. playing a video)
|
// A custom view is currently displayed (e.g. playing a video)
|
||||||
if(mCustomView != null) {
|
if(mCustomView != null) {
|
||||||
this.hideCustomView();
|
this.hideCustomView();
|
||||||
|
return true;
|
||||||
} else {
|
} else {
|
||||||
// The webview is currently displayed
|
// The webview is currently displayed
|
||||||
// If back key is bound, then send event to JavaScript
|
// If back key is bound, then send event to JavaScript
|
||||||
if (this.bound) {
|
if (isButtonPlumbedToJs(KeyEvent.KEYCODE_BACK)) {
|
||||||
this.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');");
|
this.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@ -791,48 +779,56 @@ public class CordovaWebView extends WebView {
|
|||||||
this.loadUrl("javascript:cordova.fireDocumentEvent('searchbutton');");
|
this.loadUrl("javascript:cordova.fireDocumentEvent('searchbutton');");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(keyUpCodes.contains(keyCode))
|
|
||||||
{
|
|
||||||
//What the hell should this do?
|
|
||||||
return super.onKeyUp(keyCode, event);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Does webkit change this behavior?
|
//Does webkit change this behavior?
|
||||||
return super.onKeyUp(keyCode, event);
|
return super.onKeyUp(keyCode, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setButtonPlumbedToJs(int keyCode, boolean value) {
|
||||||
|
switch (keyCode) {
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_UP:
|
||||||
|
case KeyEvent.KEYCODE_BACK:
|
||||||
|
// TODO: Why are search and menu buttons handled separately?
|
||||||
|
boundKeyCodes.add(keyCode);
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Unsupported keycode: " + keyCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated // Use setButtonPlumbedToJs() instead.
|
||||||
public void bindButton(boolean override)
|
public void bindButton(boolean override)
|
||||||
{
|
{
|
||||||
this.bound = override;
|
setButtonPlumbedToJs(KeyEvent.KEYCODE_BACK, override);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated // Use setButtonPlumbedToJs() instead.
|
||||||
public void bindButton(String button, boolean override) {
|
public void bindButton(String button, boolean override) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
if (button.compareTo("volumeup")==0) {
|
if (button.compareTo("volumeup")==0) {
|
||||||
keyDownCodes.add(KeyEvent.KEYCODE_VOLUME_UP);
|
setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_UP, override);
|
||||||
}
|
}
|
||||||
else if (button.compareTo("volumedown")==0) {
|
else if (button.compareTo("volumedown")==0) {
|
||||||
keyDownCodes.add(KeyEvent.KEYCODE_VOLUME_DOWN);
|
setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_DOWN, override);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void bindButton(int keyCode, boolean keyDown, boolean override) {
|
|
||||||
if(keyDown)
|
|
||||||
{
|
|
||||||
keyDownCodes.add(keyCode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
keyUpCodes.add(keyCode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated // Use setButtonPlumbedToJs() instead.
|
||||||
|
public void bindButton(int keyCode, boolean keyDown, boolean override) {
|
||||||
|
setButtonPlumbedToJs(keyCode, override);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated // Use isButtonPlumbedToJs
|
||||||
public boolean isBackButtonBound()
|
public boolean isBackButtonBound()
|
||||||
{
|
{
|
||||||
return this.bound;
|
return isButtonPlumbedToJs(KeyEvent.KEYCODE_BACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isButtonPlumbedToJs(int keyCode)
|
||||||
|
{
|
||||||
|
return boundKeyCodes.contains(keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
public void handlePause(boolean keepRunning)
|
public void handlePause(boolean keepRunning)
|
||||||
{
|
{
|
||||||
LOG.d(TAG, "Handle the pause");
|
LOG.d(TAG, "Handle the pause");
|
||||||
@ -904,8 +900,9 @@ public class CordovaWebView extends WebView {
|
|||||||
return paused;
|
return paused;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated // This never did anything.
|
||||||
public boolean hadKeyEvent() {
|
public boolean hadKeyEvent() {
|
||||||
return handleButton;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrapping these functions in their own class prevents warnings in adb like:
|
// Wrapping these functions in their own class prevents warnings in adb like:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user