1

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" />

4

0 回答 0