From 17906735dfe23e74cbe75394a0de3bf448233f25 Mon Sep 17 00:00:00 2001 From: Xiaolei Yu Date: Sat, 20 May 2017 06:54:23 +0800 Subject: [PATCH] CB-12835: add a Context getter in CordovaInterface A custom engine may live outside of the Activity's lifecycle and the Activity instance may not always be available. This getter allows Context accesses in all cases. --- .../src/org/apache/cordova/CordovaInterface.java | 11 ++++++++++- .../src/org/apache/cordova/CordovaInterfaceImpl.java | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/framework/src/org/apache/cordova/CordovaInterface.java b/framework/src/org/apache/cordova/CordovaInterface.java index 3b8468f3..ff906834 100755 --- a/framework/src/org/apache/cordova/CordovaInterface.java +++ b/framework/src/org/apache/cordova/CordovaInterface.java @@ -19,6 +19,7 @@ package org.apache.cordova; import android.app.Activity; +import android.content.Context; import android.content.Intent; import org.apache.cordova.CordovaPlugin; @@ -51,10 +52,18 @@ public interface CordovaInterface { /** * Get the Android activity. * + * If a custom engine lives outside of the Activity's lifecycle the return value may be null. + * * @return the Activity */ public abstract Activity getActivity(); - + + /** + * Get the Android context. + * + * @return the Context + */ + public Context getContext(); /** * Called when a message is sent to plugin. diff --git a/framework/src/org/apache/cordova/CordovaInterfaceImpl.java b/framework/src/org/apache/cordova/CordovaInterfaceImpl.java index 71dcb782..3c459025 100644 --- a/framework/src/org/apache/cordova/CordovaInterfaceImpl.java +++ b/framework/src/org/apache/cordova/CordovaInterfaceImpl.java @@ -20,6 +20,7 @@ package org.apache.cordova; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; @@ -84,6 +85,11 @@ public class CordovaInterfaceImpl implements CordovaInterface { return activity; } + @Override + public Context getContext() { + return activity; + } + @Override public Object onMessage(String id, Object data) { if ("exit".equals(id)) {