From a8ed913654ce40c7e65c14e9358c2955e6ed31a4 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Wed, 17 Jun 2020 14:17:33 -0700 Subject: [PATCH] For #11183: Redirect user to homescreen after widget added Co-authored-by: hakkikaancaliskan --- .../mozilla/gecko/search/SearchWidgetProvider.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt b/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt index b3650ff4d..e2cee7a54 100644 --- a/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt +++ b/app/src/main/java/org/mozilla/gecko/search/SearchWidgetProvider.kt @@ -4,6 +4,7 @@ package org.mozilla.gecko.search +import android.app.ActivityManager import android.app.PendingIntent import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH @@ -36,6 +37,21 @@ class SearchWidgetProvider : AppWidgetProvider() { override fun onEnabled(context: Context) { context.settings().addSearchWidgetInstalled(1) + if (isAppInForeground(context)) { + val goHomeOnWidgetAdded = Intent(Intent.ACTION_MAIN) + goHomeOnWidgetAdded.addCategory(Intent.CATEGORY_HOME) + goHomeOnWidgetAdded.flags = Intent.FLAG_ACTIVITY_NEW_TASK + context.startActivity(goHomeOnWidgetAdded) + } + } + + // We need this because user can not add widget via launcher app without this + private fun isAppInForeground(context: Context): Boolean { + val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + val runningAppProcesses = + activityManager.runningAppProcesses ?: return false + return runningAppProcesses.any { it.processName == context.packageName && + it.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND } } override fun onDeleted(context: Context, appWidgetIds: IntArray) {