我UsageStatsManager
用来获取用户启动的应用程序列表。
一开始它似乎运行良好,但它不断返回一段时间前的空数组。我的日志Log.d("appusing", queryUsageStats.size.toString())
显示 0。
这是我的代码。提前致谢。
MainActivity.kt
fun getAppUsageStats(): MutableList<UsageStats> {
val cal = Calendar.getInstance()
cal.add(Calendar.MONTH, -1)
val usageStatsManager = getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
Log.d("appusing", usageStatsManager.toString())
val queryUsageStats = usageStatsManager.queryUsageStats(
UsageStatsManager.INTERVAL_DAILY, cal.timeInMillis, System.currentTimeMillis()
)
Log.d("appusing", queryUsageStats.size.toString())
return queryUsageStats
}
fun showAppUsageStats(usageStats: MutableList<UsageStats>) {
Log.d("appusing", usageStats.size.toString())
usageStats.sortWith(Comparator { right, left ->
compareValues(left.lastTimeUsed, right.lastTimeUsed)
})
usageStats.forEach {
Log.d(
"appusing",
"packageName: ${it.packageName}, lastTimeUsed: ${Date(it.lastTimeUsed)}, " +
"totalTimeInForeground: ${it.totalTimeInForeground}"
)
}
}
//button
appusage.setOnClickListener {
var result = getAppUsageStats()
showAppUsageStats(result)
Log.d("appusing", "finished")
}
AndroidManifest.xml
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />