mirror of
https://github.com/apache/cordova-android.git
synced 2025-01-19 15:12:51 +08:00
CB-5504: Moving code to the App plugin inside Cordova, the place where the grey area beween plugin and platform exists
This commit is contained in:
parent
146e296826
commit
adba84ae6a
@ -27,6 +27,12 @@ import org.json.JSONArray;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,6 +40,22 @@ import java.util.HashMap;
|
|||||||
*/
|
*/
|
||||||
public class App extends CordovaPlugin {
|
public class App extends CordovaPlugin {
|
||||||
|
|
||||||
|
protected static final String TAG = "CordovaApp";
|
||||||
|
private BroadcastReceiver telephonyReceiver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the context of the Command. This can then be used to do things like
|
||||||
|
* get file paths associated with the Activity.
|
||||||
|
*
|
||||||
|
* @param cordova The context of the main Activity.
|
||||||
|
* @param webView The CordovaWebView Cordova is running in.
|
||||||
|
*/
|
||||||
|
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
|
||||||
|
super.initialize(cordova, webView);
|
||||||
|
this.initTelephonyReceiver();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the request and returns PluginResult.
|
* Executes the request and returns PluginResult.
|
||||||
*
|
*
|
||||||
@ -222,4 +244,44 @@ public class App extends CordovaPlugin {
|
|||||||
this.webView.postMessage("exit", null);
|
this.webView.postMessage("exit", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listen for telephony events: RINGING, OFFHOOK and IDLE
|
||||||
|
* Send these events to all plugins using
|
||||||
|
* CordovaActivity.onMessage("telephone", "ringing" | "offhook" | "idle")
|
||||||
|
*/
|
||||||
|
private void initTelephonyReceiver() {
|
||||||
|
IntentFilter intentFilter = new IntentFilter();
|
||||||
|
intentFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
|
||||||
|
//final CordovaInterface mycordova = this.cordova;
|
||||||
|
this.telephonyReceiver = new BroadcastReceiver() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
|
||||||
|
// If state has changed
|
||||||
|
if ((intent != null) && intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
|
||||||
|
if (intent.hasExtra(TelephonyManager.EXTRA_STATE)) {
|
||||||
|
String extraData = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
|
||||||
|
if (extraData.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
|
||||||
|
LOG.i(TAG, "Telephone RINGING");
|
||||||
|
webView.postMessage("telephone", "ringing");
|
||||||
|
}
|
||||||
|
else if (extraData.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
|
||||||
|
LOG.i(TAG, "Telephone OFFHOOK");
|
||||||
|
webView.postMessage("telephone", "offhook");
|
||||||
|
}
|
||||||
|
else if (extraData.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
|
||||||
|
LOG.i(TAG, "Telephone IDLE");
|
||||||
|
webView.postMessage("telephone", "idle");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Register the receiver
|
||||||
|
this.cordova.getActivity().registerReceiver(this.telephonyReceiver, intentFilter);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user