private fun isAppInForeground(packageName: String): Boolean {
val usageStatsManager = getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
val endTime = System.currentTimeMillis()
val beginTime = endTime – 60000
Log.d(“ForegroundCheck”, “Querying events from $beginTime to $endTime”)
val usageEvents = usageStatsManager.queryEvents(beginTime, endTime)
if (usageEvents == null) {
Log.d("ForegroundCheck", "UsageEvents is null")
return false
}
val detectedEvents = mutableListOf<String>()
while (usageEvents.hasNextEvent()) {
val event = UsageEvents.Event()
usageEvents.getNextEvent(event)
detectedEvents.add("Event: ${event.packageName}, Type: ${event.eventType}, Time: ${event.timeStamp}")
Log.d("ForegroundCheck", "Detected event: ${event.packageName}, type: ${event.eventType}, time: ${event.timeStamp}")
if (event.packageName == packageName) {
Log.d("ForegroundCheck", "Matching event found for package: $packageName, type: ${event.eventType}, time: ${event.timeStamp}")
return true
}
}
if (detectedEvents.isEmpty()) {
Log.d("ForegroundCheck", "No events detected in the given time range")
} else {
detectedEvents.forEach { Log.d("Check", it) }
}
Log.d("ForegroundCheck", "No matching event found for package: $packageName")
return false
}
I made sure to output log for all cases.
Even though I allowed permission, I don’t always detect the app. Log messages always pop up like this.
Querying events from 1721036611203 to 1721036671203
No events detected in the given time range
No matching event found for package: com.android.dialer
Obviously, I checked that usageevents are not null, but it’s empty when I do the rounds.
What’s the reason?
I want the problem to be solved.
정jeong is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
2