Skip to content

Instantly share code, notes, and snippets.

@Flywith24
Created February 15, 2020 06:09
Show Gist options
  • Save Flywith24/b7ebcf0fe5bf6ca09d242d0de1c3cbf0 to your computer and use it in GitHub Desktop.
Save Flywith24/b7ebcf0fe5bf6ca09d242d0de1c3cbf0 to your computer and use it in GitHub Desktop.
获取栈顶应用
package cn.whdx.mdm.utils
import android.app.usage.UsageStats
import android.app.usage.UsageStatsManager
import android.content.Context
import android.text.TextUtils
import cn.bcbook.baselibrary.utils.LogUtil
/**
* @author yyz (杨云召)
* @date 2020-02-13
* time 15:10
* description
* 判断某应用是否在前台工具类
*/
object ForegroundAppUtil {
private val END_TIME = System.currentTimeMillis()
private const val TIME_INTERVAL = 7 * 24 * 60 * 60 * 1000L
private val START_TIME = END_TIME - TIME_INTERVAL
/**
* 获取栈顶Activity包名
*/
private fun getForegroundActivityName(context: Context): String? {
var usageStatsResult: UsageStats? = null
val usageStatsList = getUsageStatsList(context)
if (usageStatsList == null || usageStatsList.isEmpty()) return null
for (usageStats in usageStatsList) {
if (usageStatsResult == null || usageStatsResult.lastTimeUsed < usageStats.lastTimeUsed) {
usageStatsResult = usageStats
}
}
return usageStatsResult?.packageName
}
/**
* 通过UsageStatsManager获取List<UsageStats>集合
*/
private fun getUsageStatsList(context: Context): List<UsageStats>? {
val manager = context.applicationContext
.getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
//UsageStatsManager.INTERVAL_WEEKLY,UsageStatsManager的参数定义了5个,具体查阅源码
val usageStatsList = manager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, START_TIME, END_TIME)
if (usageStatsList == null || usageStatsList.size == 0) {
// 没有权限,获取不到数据
return null
}
return usageStatsList
}
/**
* 判断当前应用是否在前台
*/
fun isForegroundApp(context: Context, packageName: String?): Boolean {
if (packageName == null) return false
val foregroundPackageName = getForegroundActivityName(context)
LogUtil.d("AppStoreMdmReceiver", "栈顶包名为:$foregroundPackageName 传入包名为:$packageName")
return TextUtils.equals(foregroundPackageName, packageName)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment