diff --git a/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java b/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java index dc6f633e751..2bb8a7cb4c7 100644 --- a/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java +++ b/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java @@ -20,6 +20,7 @@ import org.appcelerator.titanium.TiApplication; import org.appcelerator.titanium.TiBaseActivity; import org.appcelerator.titanium.TiC; +import org.appcelerator.titanium.proxy.ActivityProxy; import org.appcelerator.titanium.proxy.IntentProxy; import org.appcelerator.titanium.proxy.RProxy; import org.appcelerator.titanium.proxy.ServiceProxy; @@ -325,6 +326,11 @@ public RProxy getR() { return r; } + @Kroll.method @Kroll.getProperty + public ActivityProxy getCurrentActivity() { + return TiApplication.getAppCurrentActivity().getActivityProxy(); + } + @Kroll.method public void startService(IntentProxy intentProxy) { diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java b/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java index 47371bdfc5c..44852ab19d2 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java @@ -6,45 +6,6 @@ */ package org.appcelerator.titanium; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.lang.Thread.UncaughtExceptionHandler; -import java.lang.ref.SoftReference; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Properties; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.appcelerator.kroll.KrollApplication; -import org.appcelerator.kroll.KrollDict; -import org.appcelerator.kroll.KrollModule; -import org.appcelerator.kroll.KrollProxy; -import org.appcelerator.kroll.KrollRuntime; -import org.appcelerator.kroll.common.CurrentActivityListener; -import org.appcelerator.kroll.common.Log; -import org.appcelerator.kroll.common.TiConfig; -import org.appcelerator.kroll.common.TiDeployData; -import org.appcelerator.kroll.common.TiMessenger; -import org.appcelerator.kroll.util.KrollAssetHelper; -import org.appcelerator.kroll.util.TiTempFileHelper; -import org.appcelerator.titanium.analytics.TiAnalyticsEventFactory; -import org.appcelerator.titanium.util.TiBlobLruCache; -import org.appcelerator.titanium.util.TiFileHelper; -import org.appcelerator.titanium.util.TiImageLruCache; -import org.appcelerator.titanium.util.TiPlatformHelper; -import org.appcelerator.titanium.util.TiResponseCache; -import org.appcelerator.titanium.util.TiUIHelper; -import org.appcelerator.titanium.util.TiWeakList; -import org.json.JSONException; -import org.json.JSONObject; - -import ti.modules.titanium.TitaniumModule; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Application; @@ -57,9 +18,32 @@ import android.support.multidex.MultiDex; import android.util.DisplayMetrics; import android.view.accessibility.AccessibilityManager; - import com.appcelerator.aps.APSAnalytics; import com.appcelerator.aps.APSAnalytics.DeployType; +import org.appcelerator.kroll.*; +import org.appcelerator.kroll.common.*; +import org.appcelerator.kroll.util.KrollAssetHelper; +import org.appcelerator.kroll.util.TiTempFileHelper; +import org.appcelerator.titanium.analytics.TiAnalyticsEventFactory; +import org.appcelerator.titanium.util.*; +import org.json.JSONException; +import org.json.JSONObject; +import ti.modules.titanium.TitaniumModule; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.lang.Thread.UncaughtExceptionHandler; +import java.lang.ref.SoftReference; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Properties; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * The main application entry point for all Titanium applications and services. @@ -114,7 +98,7 @@ public abstract class TiApplication extends Application implements KrollApplicat public static AtomicBoolean isActivityTransition = new AtomicBoolean(false); protected static ArrayList activityTransitionListeners = new ArrayList(); - protected static TiWeakList activityStack = new TiWeakList(); + protected static TiWeakList activityStack = new TiWeakList(); public static interface ActivityTransitionListener { @@ -174,9 +158,9 @@ public static TiApplication getInstance() return null; } - public static void addToActivityStack(Activity activity) + public static void addToActivityStack(TiBaseActivity activity) { - activityStack.add(new WeakReference(activity)); + activityStack.add(new WeakReference(activity)); } public static void removeFromActivityStack(Activity activity) @@ -192,7 +176,7 @@ public static void terminateActivityStack() return; } - WeakReference activityRef; + WeakReference activityRef; Activity currentActivity; for (int i = activityStack.size() - 1; i >= 0; i--) { @@ -216,7 +200,7 @@ public boolean activityStackHasLaunchActivity() if (activityStack == null || activityStack.size() == 0) { return false; } - for (WeakReference activityRef : activityStack) { + for (WeakReference activityRef : activityStack) { if (activityRef != null && activityRef.get() instanceof TiLaunchActivity) { return true; } @@ -244,7 +228,7 @@ public static boolean isCurrentActivityInForeground() * @return the current activity * @module.api */ - public static Activity getAppCurrentActivity() + public static TiBaseActivity getAppCurrentActivity() { TiApplication tiApp = getInstance(); if (tiApp == null) { @@ -274,12 +258,12 @@ public static Activity getAppRootOrCurrentActivity() * @return the current activity if exists. Otherwise, the thread will wait for a valid activity to be visible. * @module.api */ - public Activity getCurrentActivity() + public TiBaseActivity getCurrentActivity() { int activityStackSize; while ((activityStackSize = activityStack.size()) > 0) { - Activity activity = (activityStack.get(activityStackSize - 1)).get(); + TiBaseActivity activity = (activityStack.get(activityStackSize - 1)).get(); // Skip and remove any activities which are dead or in the process of finishing. if (activity == null || activity.isFinishing()) {