- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
每当我尝试查询 UsageStatsManager 的使用情况统计信息时,我都可以正确获取最后运行的应用程序。但是,如果我拉下状态栏并且有新通知,则上次使用的应用程序(基于 UsageStats)将更改为通知的应用程序。结果,我收到前台应用程序已更改的错误警报。
我似乎找不到过滤这些特定抽奖的方法。有什么想法吗?
现在,我使用以下代码查询前台应用程序。该问题仅存在于 Marshmallow 中(5.X 可以正常工作)。
UsageStatsManager mUsageStatsManager = (UsageStatsManager) rotationManager.getSystemService("usagestats");
long time = System.currentTimeMillis();
// We get usage stats for the last 10 seconds
List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 2, time);
// Sort the stats by the last time used
if (stats != null) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : stats) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
foregroundApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
}
}
最佳答案
您可以查询usageEvent以检查最后一个 Activity 应用的事件是否为UsageEvents.Event.MOVE_TO_FOREGROUND。
获取foregroundApp后,可以引用以下代码:
UsageEvents usageEvents = mUsageStatsManager.queryEvents(time - 100 * 1000, time);
UsageEvents.Event event = new UsageEvents.Event();
// get last event
while (usageEvent.hasNextEvent()) {
usageEvent.getNextEvent(event);
}
if (foregroundApp.equals(event.getPackageName()) && event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
return foregroundApp ;
}
关于尝试检索前台应用程序时出现 Android 6.0 Marshmallow UsageStatsManager 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33307042/
我正在使用这个 link生成应用程序使用状态。我对所选间隔的理解是,对于 YEARLY 间隔,它会为 beginTime 和 endTimeYEAR 的数据持续时间。同样,它应该适用于 WEEKLY
背景 Google 已弃用“ActivityManager”类的函数“getRecentTasks”。现在它所做的就是获取当前应用已打开的应用列表。 我什至写了一篇关于它的帖子 here on Sta
我想显示 current bucket我的应用程序在 Android P beta 下的设备上。因此,我尝试像这样使用 UsageStatsManager 类: @Override public vo
我正在尝试使用 UsageStatsManager 在带有 Marshmallow 的 Nexus 5 上获取前台应用程序。我记得它曾经有效,但出于某种原因,我现在得到包/类名称的空字符串。 这是我的
我正在尝试从 UsageStatsManager 查询 UsageStats,目的是返回每天使用的所有应用程序包以及使用时长。 代码: public static List getUsageStats
我正在尝试使用 UsageStatsManager。我了解我需要将以下内容放入我的 Android list 中: 但是,当我尝试这样做时,Eclipse 会抛出以下错误:与元素类型“uses-pe
如果我想获取今天应用使用情况的数据,首先我允许我的应用从设置中读取应用使用统计信息,然后我使用这个查询来获取 UsageStats UsageStatsManager usm = (UsageStat
我正在尝试在 Android Wear 设备上使用 UsageStatsManager。 我做了什么: 我正在手机上运行的移动应用程序上请求权限。在用户授予权限后,我可以访问使用情况统计数据。然后我在
我正在尝试从 UsageStatsManager 查询 UsageStats。我构建了一个 DateUtils 类,它为我提供了获取每天/每月/每年(一周即将到来)的开始和结束时间的方法,如下所示:
我正在开发一个 Android TV 应用(系统应用),我正在尝试使用 UsageStatsManager 获取最近使用的应用列表。 通过以下方法, UsageStatsManager usm = g
我需要获取有关最近应用使用情况的信息。 在 API 21 之前,它被使用 getRunningTasks或 getRecentTasks获取此信息。根据文档,这些方法已在 API 21 中弃用。 有U
每当我尝试查询 UsageStatsManager 的使用情况统计信息时,我都可以正确获取最后运行的应用程序。但是,如果我拉下状态栏并且有新通知,则上次使用的应用程序(基于 UsageStats)将更
我正在尝试获取手机上当前正在运行的应用程序列表。这是我正在使用的代码: if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION
您好,我正在使用 UsageStatsManager api 向用户显示一些使用列表。但我面临一些问题。我在很多设备上都遇到这个错误,在某些设备上它工作正常。我仍在浏览这个问题。你们能帮我解决这个问题
目标: 需要获取今天的使用情况统计信息(今天使用设备的总时间),即。中午 12 点到当前时间。 问题: 1.我得到今天的时间+一些其他无法解释的时间 2.不可解释的时间戳(getTimestamp 方
下面的代码在 6.0 版本之前工作正常 if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { U
我是一名优秀的程序员,十分优秀!