简介
类UsageStatics
是记录app使用统计分析数据的,比如:最后一是使用的时间/包名,这个是需要权限的
效果图
类和方法
类 | 方法 | 说明 |
---|---|---|
UsageStaticsManager | -- | app使用统计的管理者 |
-- | queryUsageStats (int intervalType, long beginTime, long endTime) | 按照条件查询,结果是List |
UsageStats | -- | app使用统计信息类 |
-- | getPackageName() | 获取包名,API>=21 |
-- | getLastTimeUsed() | 最后的使用时间,API>=21 |
Java
先要获取UsageStatsManager
UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(USAGE_STATS_SERVICE);
在获取5年内的统计数据,并用RecyclerView显示
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -5);
// queryUsageStats API>=21 UsageStatsManager.INTERVAL_DAILY
List usageStatsList = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, calendar.getTimeInMillis(), System.currentTimeMillis());
如果null == usageStatsList || usageStatsList.size() == 0
说明乜有给权限,需要打开设置界面
`
[TOC]
``
startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
# 知识点 #
## 如果获取app的logo? ##
根据`packageName`获取
Drawable getApplicationIcon (String packageName)
例:
packageManager.getApplicationIcon(packageName())
## 怎么对List进行排序? ##
Collections.sort(usageStatsList, new ComparatorList());
public class ComparatorList implements Comparator
@Override
public int compare(UsageStats t1, UsageStats t2) {
return (int) (t2.getLastTimeUsed() - t1.getLastTimeUsed());
}
}
# 其他 #
google Android Sample:https://developer.android.google.cn/samples/AppUsageStatistics/index.html
Demo:http://git.oschina.net/AndroidBaseDemo/AppUsageStatistics01