From 17906735dfe23e74cbe75394a0de3bf448233f25 Mon Sep 17 00:00:00 2001
From: Xiaolei Yu <dreifachstein@gmail.com>
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)) {