我正在尝试使用最近在 Android 中引入的 UsageStatsManager 类来阅读应用程序的上次使用时间。
但是有一个问题。它为大多数应用程序提供了正确的结果。但对于某些调用应用程序:appUsageStats.get(appInformation.packageName).getLastTimeUsed()
它返回一个不正确的 4 位数毫秒。
附件是评估窗口的屏幕截图,显示真正的呼叫者应用程序的 8738。这是一个错误还是我做错了什么?
注意:作为观察结果,当mLastTimeSystemUsed
与 相同时,此 API 返回正确的结果mLastTimeUsed
。仅供参考。
下面的代码片段:
Map<String, UsageStats> appUsageStats = UStats.getMapOfAggregatedUsage(MainActivity.this);
if(appUsageStats.get(appInformation.packageName)!=null) {
long used = appUsageStats.get(appInformation.packageName).getLastTimeUsed();
long installedDiff2 = new Date().getTime() - new Date(used).getTime();
long daysGap = TimeUnit.DAYS.convert(installedDiff2, TimeUnit.MILLISECONDS);
if(daysGap == 0) {
appInfoObj.setAppUsedDate("Used : Today");
} else {
appInfoObj.setAppUsedDate("Used : " + String.valueOf(daysGap) + " days ago");
}
appInfoObj.setAppUsedDateNumber(daysGap);
}
UStats 类方法:
public static Map<String, UsageStats> getMapOfAggregatedUsage(Context context) {
Calendar calendar = Calendar.getInstance();
long endTime = calendar.getTimeInMillis();
calendar.add(Calendar.YEAR, -1);
long startTime = calendar.getTimeInMillis();
return getUsageStatsManager(context).queryAndAggregateUsageStats(startTime,endTime);
// return null;
}