mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-26 20:33:07 +08:00
Full binary data support.
- Removed BinaryEcho; made Echo support a new binaryEcho action. - Added CordovaArgs wrapper for JSONArray, and a new overload for execute that accepts a CordovaArgs. There is now a default implementation for the JSONArray version of execute that builds a CordovaArgs and calls that version of execute. The default implementation for the CordovaArgs execute is to return false. - Added byte[] version of success() in CallbackContext.
This commit is contained in:
parent
547b683e61
commit
7530c21a9f
@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
or more contributor license agreements. See the NOTICE file
|
|
||||||
distributed with this work for additional information
|
|
||||||
regarding copyright ownership. The ASF licenses this file
|
|
||||||
to you under the Apache License, Version 2.0 (the
|
|
||||||
"License"); you may not use this file except in compliance
|
|
||||||
with the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing,
|
|
||||||
software distributed under the License is distributed on an
|
|
||||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
KIND, either express or implied. See the License for the
|
|
||||||
specific language governing permissions and limitations
|
|
||||||
under the License.
|
|
||||||
*/
|
|
||||||
package org.apache.cordova;
|
|
||||||
|
|
||||||
import org.apache.cordova.api.CallbackContext;
|
|
||||||
import org.apache.cordova.api.CordovaPlugin;
|
|
||||||
import org.apache.cordova.api.PluginResult;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONException;
|
|
||||||
|
|
||||||
public class BinaryEcho extends CordovaPlugin {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Executes the request.
|
|
||||||
*
|
|
||||||
* @param action The action to execute.
|
|
||||||
* @param args JSONArry of arguments for the plugin.
|
|
||||||
* @param callbackContext The callback context used when calling back into JavaScript.
|
|
||||||
* @return True if the action was valid, false if not.
|
|
||||||
*/
|
|
||||||
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
|
|
||||||
try {
|
|
||||||
if (action.equals("echo")) {
|
|
||||||
byte[] data = CordovaArguments.getArrayBuffer(args, 0);
|
|
||||||
|
|
||||||
// Don't return any result now, since status results will be sent when events come in from broadcast receiver
|
|
||||||
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, data);
|
|
||||||
callbackContext.sendPluginResult(pluginResult);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
112
framework/src/org/apache/cordova/CordovaArgs.java
Normal file
112
framework/src/org/apache/cordova/CordovaArgs.java
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
*/
|
||||||
|
package org.apache.cordova;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
import android.util.Base64;
|
||||||
|
|
||||||
|
public class CordovaArgs {
|
||||||
|
private JSONArray baseArgs;
|
||||||
|
|
||||||
|
public CordovaArgs(JSONArray args) {
|
||||||
|
this.baseArgs = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Pass through the basics to the base args.
|
||||||
|
public Object get(int index) throws JSONException {
|
||||||
|
return baseArgs.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getBoolean(int index) throws JSONException {
|
||||||
|
return baseArgs.getBoolean(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getDouble(int index) throws JSONException {
|
||||||
|
return baseArgs.getDouble(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getInt(int index) throws JSONException {
|
||||||
|
return baseArgs.getInt(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONArray getJSONArray(int index) throws JSONException {
|
||||||
|
return baseArgs.getJSONArray(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getJSONObject(int index) throws JSONException {
|
||||||
|
return baseArgs.getJSONObject(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLong(int index) throws JSONException {
|
||||||
|
return baseArgs.getLong(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getString(int index) throws JSONException {
|
||||||
|
return baseArgs.getString(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Object opt(int index) {
|
||||||
|
return baseArgs.opt(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean optBoolean(int index) {
|
||||||
|
return baseArgs.optBoolean(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double optDouble(int index) {
|
||||||
|
return baseArgs.optDouble(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int optInt(int index) {
|
||||||
|
return baseArgs.optInt(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONArray optJSONArray(int index) {
|
||||||
|
return baseArgs.optJSONArray(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object optJSONObject(int index) {
|
||||||
|
return baseArgs.optJSONObject(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long optLong(int index) {
|
||||||
|
return baseArgs.optLong(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String optString(int index) {
|
||||||
|
return baseArgs.optString(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNull(int index) {
|
||||||
|
return baseArgs.isNull(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// The interesting custom helpers.
|
||||||
|
public byte[] getArrayBuffer(int index) throws JSONException {
|
||||||
|
String encoded = baseArgs.getString(index);
|
||||||
|
return Base64.decode(encoded, Base64.DEFAULT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
or more contributor license agreements. See the NOTICE file
|
|
||||||
distributed with this work for additional information
|
|
||||||
regarding copyright ownership. The ASF licenses this file
|
|
||||||
to you under the Apache License, Version 2.0 (the
|
|
||||||
"License"); you may not use this file except in compliance
|
|
||||||
with the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing,
|
|
||||||
software distributed under the License is distributed on an
|
|
||||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
KIND, either express or implied. See the License for the
|
|
||||||
specific language governing permissions and limitations
|
|
||||||
under the License.
|
|
||||||
*/
|
|
||||||
package org.apache.cordova;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONException;
|
|
||||||
|
|
||||||
import android.util.Base64;
|
|
||||||
|
|
||||||
public class CordovaArguments {
|
|
||||||
public static byte[] getArrayBuffer(JSONArray args, int index) throws JSONException {
|
|
||||||
String encoded = args.getString(index);
|
|
||||||
return Base64.decode(encoded, Base64.DEFAULT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -20,24 +20,28 @@ package org.apache.cordova;
|
|||||||
|
|
||||||
import org.apache.cordova.api.CallbackContext;
|
import org.apache.cordova.api.CallbackContext;
|
||||||
import org.apache.cordova.api.CordovaPlugin;
|
import org.apache.cordova.api.CordovaPlugin;
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
|
||||||
public class Echo extends CordovaPlugin {
|
public class Echo extends CordovaPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
|
public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException {
|
||||||
final String result = args.isNull(0) ? null : args.getString(0);
|
|
||||||
if ("echo".equals(action)) {
|
if ("echo".equals(action)) {
|
||||||
|
final String result = args.isNull(0) ? null : args.getString(0);
|
||||||
callbackContext.success(result);
|
callbackContext.success(result);
|
||||||
return true;
|
return true;
|
||||||
} else if ("echoAsync".equals(action)) {
|
} else if ("echoAsync".equals(action)) {
|
||||||
|
final String result = args.isNull(0) ? null : args.getString(0);
|
||||||
cordova.getThreadPool().execute(new Runnable() {
|
cordova.getThreadPool().execute(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
callbackContext.success(result);
|
callbackContext.success(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
} else if ("binaryEcho".equals(action)) {
|
||||||
|
final byte[] result = args.getArrayBuffer(0);
|
||||||
|
callbackContext.success(result);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,15 @@ public class CallbackContext {
|
|||||||
sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
|
sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper for success callbacks that just returns the Status.OK by default
|
||||||
|
*
|
||||||
|
* @param message The message to add to the success result.
|
||||||
|
*/
|
||||||
|
public void success(byte[] message) {
|
||||||
|
sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper for success callbacks that just returns the Status.OK by default
|
* Helper for success callbacks that just returns the Status.OK by default
|
||||||
*
|
*
|
||||||
|
@ -18,12 +18,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.cordova.api;
|
package org.apache.cordova.api;
|
||||||
|
|
||||||
|
import org.apache.cordova.CordovaArgs;
|
||||||
import org.apache.cordova.CordovaWebView;
|
import org.apache.cordova.CordovaWebView;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugins must extend this class and override one of the execute methods.
|
* Plugins must extend this class and override one of the execute methods.
|
||||||
*/
|
*/
|
||||||
@ -76,6 +76,25 @@ public class CordovaPlugin {
|
|||||||
* @return Whether the action was valid.
|
* @return Whether the action was valid.
|
||||||
*/
|
*/
|
||||||
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
|
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
|
||||||
|
CordovaArgs cordovaArgs = new CordovaArgs(args);
|
||||||
|
return execute(action, cordovaArgs, callbackContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes the request.
|
||||||
|
*
|
||||||
|
* This method is called from the WebView thread. To do a non-trivial amount of work, use:
|
||||||
|
* cordova.getThreadPool().execute(runnable);
|
||||||
|
*
|
||||||
|
* To run on the UI thread, use:
|
||||||
|
* cordova.getActivity().runOnUiThread(runnable);
|
||||||
|
*
|
||||||
|
* @param action The action to execute.
|
||||||
|
* @param args The exec() arguments, wrapped with some Cordova helpers.
|
||||||
|
* @param callbackContext The callback context used when calling back into JavaScript.
|
||||||
|
* @return Whether the action was valid.
|
||||||
|
*/
|
||||||
|
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user