Чтобы получить список открытых в данный момент приложений в Kotlin, вы можете использовать различные методы, предоставляемые платформой Android. Вот несколько методов с примерами кода, которые вы можете использовать:
Метод 1: использование ActivityManager.getRunningAppProcesses()
import android.app.ActivityManager
import android.content.Context
fun getCurrentOpenApps(context: Context): List<String> {
val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val runningAppProcesses = activityManager.runningAppProcesses
val openApps = mutableListOf<String>()
runningAppProcesses?.forEach { processInfo ->
openApps.add(processInfo.processName)
}
return openApps
}
Метод 2: использование UsageStatsManager
import android.app.usage.UsageStats
import android.app.usage.UsageStatsManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
fun getCurrentOpenApps(context: Context): List<String> {
val usageStatsManager = context.getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
val endTime = System.currentTimeMillis()
val startTime = endTime - 1000 * 60 // Look for usage stats in the last 1 minute
val usageStatsList = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, startTime, endTime)
val openApps = mutableListOf<String>()
usageStatsList?.forEach { usageStats ->
val packageName = usageStats.packageName
val packageManager = context.packageManager
val intent = packageManager.getLaunchIntentForPackage(packageName)
if (intent != null) {
openApps.add(packageName)
}
}
return openApps
}
Метод 3: использование ActivityManager.getRunningTasks() (устарело)
import android.app.ActivityManager
import android.content.Context
@Suppress("DEPRECATION")
fun getCurrentOpenApps(context: Context): List<String> {
val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val runningTasks = activityManager.getRunningTasks(10)
val openApps = mutableListOf<String>()
runningTasks?.forEach { taskInfo ->
openApps.add(taskInfo.baseActivity?.packageName ?: "")
}
return openApps
}
Обратите внимание, что метод 3 с использованием getRunningTasks()устарел, начиная с уровня Android API 21 (Android 5.0 Lollipop) и более поздних версий. Для более новых версий Android рекомендуется использовать метод 1 или метод 2.