android - 如何避免在 Android 中由 UsageStatsManager 读取通知?
问题描述
我目前正在开发 AppLocker App,它检测用户使用 UsageStatsManager 打开的应用程序。我使用后台服务 BackgroundServices.java 进行检测。但是当我们通过向下滚动打开通知栏时,UsageStatsManager 会随机将任何通知视为正在运行并不必要地打开 LockScreen。
用于检测和返回当前使用应用程序 BackgroundServices.java 的主块
private String printForegroundTask() {
String currentApp = "NULL";
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager usm = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*1000, time);
if (appList != null && appList.size() > 0) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : appList) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
}
}
} else {
ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses();
currentApp = tasks.get(0).processName;
}
// Log.e("AppLockerService", "Current App in foreground is: " + currentApp)
return currentApp;
}
解决方案
推荐阅读
- spring - Spring mvc HTTP 状态 404 - GET /spring-mvc/login 没有映射
- python-3.x - PyQt5 returnPressed.connect“在函数中找不到引用'connect'”
- java - 如何忽略与模式“if (log.isDebugEnabled()) {”匹配的行的 CheckStyle 规则
- python - GCP AI Platform(统一)Python export_model FailedPrecondition: 400 Exporting artifact in format ``不支持
- bash - 如何计算文件中每一行中某个元素的出现次数(bash)
- r - 为R中向量的重复值分配序列号
- javascript - 如何获取此 api 中的所有 87 个对象
- node.js - 如何在一个目录中 Dockerize 两个 nodejs 应用程序
- typescript - 搜索 Typescript 类的预定义实例
- openedge - 如何获取正在进行的多个项目的最后一个元素?