Created
February 15, 2020 06:09
-
-
Save Flywith24/b7ebcf0fe5bf6ca09d242d0de1c3cbf0 to your computer and use it in GitHub Desktop.
获取栈顶应用
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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