232 lines
8.4 KiB
Java
232 lines
8.4 KiB
Java
/*
|
|
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.CordovaArgs;
|
|
import org.apache.cordova.CordovaWebView;
|
|
import org.apache.cordova.CordovaInterface;
|
|
import org.apache.cordova.CallbackContext;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
|
|
import android.content.Intent;
|
|
import android.net.Uri;
|
|
|
|
/**
|
|
* Plugins must extend this class and override one of the execute methods.
|
|
*/
|
|
public class CordovaPlugin {
|
|
@Deprecated // This is never set.
|
|
public String id;
|
|
public CordovaWebView webView;
|
|
public CordovaInterface cordova;
|
|
protected CordovaPreferences preferences;
|
|
|
|
/**
|
|
* Call this after constructing to initialize the plugin.
|
|
* Final because we want to be able to change args without breaking plugins.
|
|
*/
|
|
public final void privateInitialize(CordovaInterface cordova, CordovaWebView webView, CordovaPreferences preferences) {
|
|
assert this.cordova == null;
|
|
this.cordova = cordova;
|
|
this.webView = webView;
|
|
this.preferences = preferences;
|
|
initialize(cordova, webView);
|
|
pluginInitialize();
|
|
}
|
|
|
|
/**
|
|
* Called after plugin construction and fields have been initialized.
|
|
* Prefer to use pluginInitialize instead since there is no value in
|
|
* having parameters on the initialize() function.
|
|
*/
|
|
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
|
|
}
|
|
|
|
/**
|
|
* Called after plugin construction and fields have been initialized.
|
|
*/
|
|
protected void pluginInitialize() {
|
|
}
|
|
|
|
/**
|
|
* 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 rawArgs The exec() arguments in JSON form.
|
|
* @param callbackContext The callback context used when calling back into JavaScript.
|
|
* @return Whether the action was valid.
|
|
*/
|
|
public boolean execute(String action, String rawArgs, CallbackContext callbackContext) throws JSONException {
|
|
JSONArray args = new JSONArray(rawArgs);
|
|
return execute(action, args, 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.
|
|
* @param callbackContext The callback context used when calling back into JavaScript.
|
|
* @return Whether the action was valid.
|
|
*/
|
|
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;
|
|
}
|
|
|
|
/**
|
|
* Called when the system is about to start resuming a previous activity.
|
|
*
|
|
* @param multitasking Flag indicating if multitasking is turned on for app
|
|
*/
|
|
public void onPause(boolean multitasking) {
|
|
}
|
|
|
|
/**
|
|
* Called when the activity will start interacting with the user.
|
|
*
|
|
* @param multitasking Flag indicating if multitasking is turned on for app
|
|
*/
|
|
public void onResume(boolean multitasking) {
|
|
}
|
|
|
|
/**
|
|
* Called when the activity receives a new intent.
|
|
*/
|
|
public void onNewIntent(Intent intent) {
|
|
}
|
|
|
|
/**
|
|
* The final call you receive before your activity is destroyed.
|
|
*/
|
|
public void onDestroy() {
|
|
}
|
|
|
|
/**
|
|
* Called when a message is sent to plugin.
|
|
*
|
|
* @param id The message id
|
|
* @param data The message data
|
|
* @return Object to stop propagation or null
|
|
*/
|
|
public Object onMessage(String id, Object data) {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Called when an activity you launched exits, giving you the requestCode you started it with,
|
|
* the resultCode it returned, and any additional data from it.
|
|
*
|
|
* @param requestCode The request code originally supplied to startActivityForResult(),
|
|
* allowing you to identify who this result came from.
|
|
* @param resultCode The integer result code returned by the child activity through its setResult().
|
|
* @param intent An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
|
|
*/
|
|
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
|
|
}
|
|
|
|
/**
|
|
* By specifying a <url-filter> in config.xml you can map a URL (using startsWith atm) to this method.
|
|
*
|
|
* @param url The URL that is trying to be loaded in the Cordova webview.
|
|
* @return Return true to prevent the URL from loading. Default is false.
|
|
*/
|
|
public boolean onOverrideUrlLoading(String url) {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Hook for redirecting requests. Applies to WebView requests as well as requests made by plugins.
|
|
*/
|
|
public Uri remapUri(Uri uri) {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Called when the WebView does a top-level navigation or refreshes.
|
|
*
|
|
* Plugins should stop any long-running processes and clean up internal state.
|
|
*
|
|
* Does nothing by default.
|
|
*/
|
|
public void onReset() {
|
|
}
|
|
|
|
/**
|
|
* Called when the system received an HTTP authentication request. Plugin can use
|
|
* the supplied HttpAuthHandler to process this auth challenge.
|
|
*
|
|
* @param view The WebView that is initiating the callback
|
|
* @param handler The HttpAuthHandler used to set the WebView's response
|
|
* @param host The host requiring authentication
|
|
* @param realm The realm for which authentication is required
|
|
*
|
|
* @return Returns True if plugin will resolve this auth challenge, otherwise False
|
|
*
|
|
*/
|
|
public boolean onReceivedHttpAuthRequest(CordovaWebView view, ICordovaHttpAuthHandler handler, String host, String realm) {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Called when he system received an SSL client certificate request. Plugin can use
|
|
* the supplied ClientCertRequest to process this certificate challenge.
|
|
*
|
|
* @param view The WebView that is initiating the callback
|
|
* @param request The client certificate request
|
|
*
|
|
* @return Returns True if plugin will resolve this auth challenge, otherwise False
|
|
*
|
|
*/
|
|
public boolean onReceivedClientCertRequest(CordovaWebView view, ICordovaClientCertRequest request) {
|
|
return false;
|
|
}
|
|
}
|