diff --git a/app/src/main/java/cu/axel/smartdock/services/DockService.kt b/app/src/main/java/cu/axel/smartdock/services/DockService.kt index 472b9c1f..0ffa3817 100644 --- a/app/src/main/java/cu/axel/smartdock/services/DockService.kt +++ b/app/src/main/java/cu/axel/smartdock/services/DockService.kt @@ -1546,7 +1546,7 @@ class DockService : AccessibilityService(), OnSharedPreferenceChangeListener, On val nApps = if (orientation == Configuration.ORIENTATION_PORTRAIT) maxApps else maxAppsLandscape if (systemApp) { - tasks = AppUtils.getRunningTasks(activityManager, packageManager, nApps) + tasks = AppUtils.getRunningTasks(activityManager, packageManager, nApps, context) for (j in 1..tasks.size) { val task = tasks[tasks.size - j] val index = AppUtils.containsTask(apps, task) diff --git a/app/src/main/java/cu/axel/smartdock/utils/AppUtils.kt b/app/src/main/java/cu/axel/smartdock/utils/AppUtils.kt index b89de9af..b150845b 100644 --- a/app/src/main/java/cu/axel/smartdock/utils/AppUtils.kt +++ b/app/src/main/java/cu/axel/smartdock/utils/AppUtils.kt @@ -106,6 +106,11 @@ object AppUtils { return apps } + fun getHiddenApps(context: Context): Set { + val sharedPreferences = androidx.preference.PreferenceManager.getDefaultSharedPreferences(context) + return sharedPreferences.getStringSet("hidden_apps_grid", emptySet()) ?: emptySet() + } + fun pinApp(context: Context, app: App, type: String) { val userManager = context.getSystemService(Context.USER_SERVICE) as UserManager val file = File(context.filesDir, type) @@ -183,10 +188,11 @@ object AppUtils { } fun getRunningTasks( - activityManager: ActivityManager, packageManager: PackageManager, max: Int + activityManager: ActivityManager, packageManager: PackageManager, max: Int, context: Context ): ArrayList { val tasksInfo = activityManager.getRunningTasks(max) currentApp = tasksInfo[0].baseActivity!!.packageName + val hiddenApps = getHiddenApps(context) val appTasks = ArrayList() for (taskInfo in tasksInfo) { try { @@ -201,6 +207,10 @@ object AppUtils { packageManager ) ) continue + + // Exclude hidden apps + if (hiddenApps.contains(taskInfo.topActivity!!.packageName)) continue + if (Build.VERSION.SDK_INT > 29) { try { val isRunning = taskInfo.javaClass.getField("isRunning") @@ -229,10 +239,11 @@ object AppUtils { listOf(context.packageName, getCurrentLauncher(context.packageManager)) val usm = context.getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager val start = System.currentTimeMillis() - SystemClock.elapsedRealtime() + val hiddenApps = getHiddenApps(context) val usageStats = usm.queryUsageStats( UsageStatsManager.INTERVAL_BEST, start, System.currentTimeMillis() ).sortedWith(compareByDescending { it.lastTimeUsed }) - .filterNot { ignoredApps.contains(it.packageName) } + .filterNot { ignoredApps.contains(it.packageName) || hiddenApps.contains(it.packageName) } val appTasks = ArrayList() if (usageStats.isNotEmpty()) currentApp = usageStats[0].packageName