/// <summary> /// Gets the current activity. /// The inspiration for this code came from here: /// http://stackoverflow.com/questions/11411395/how-to-get-current-foreground-activity-context-in-android /// </summary> private static Activity GetActivity() { Class activityThreadClass = Class.ForName("android.app.ActivityThread"); Object activityThread = activityThreadClass.GetMethod("currentActivityThread").Invoke(null); var activitiesField = activityThreadClass.GetDeclaredField("mActivities"); activitiesField.Accessible = true; ArrayMap activities = (ArrayMap)activitiesField.Get(activityThread); foreach (Object activityRecord in activities.Values()) { try { Class activityRecordClass = activityRecord.Class; Field pausedField = activityRecordClass.GetDeclaredField("paused"); pausedField.Accessible = true; if (!pausedField.GetBoolean(activityRecord)) { Field activityField = activityRecordClass.GetDeclaredField("activity"); activityField.Accessible = true; Activity activity = (Activity)activityField.Get(activityRecord); return(activity); } } catch (Exception) { } } return(null); }