7

我正在尝试使用最近在 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;
}
4

0 回答 0