獲取最近使用的應用串列需要使用到UsageStatsManager類,還需要申請允許防御應用使用情況的權限,
private void getPackagesInfo() {
UsageStatsManager manager = (UsageStatsManager) getApplicationContext().getSystemService(USAGE_STATS_SERVICE);
List<UsageStats> stats = manager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, PhoneUtils.getTimesMorning().getTime(), PhoneUtils.getTimesNight().getTime());
PackageManager pm = getPackageManager();
for (UsageStats us : stats) {
ApplicationInfo applicationInfo = null;
try {
applicationInfo = pm.getApplicationInfo(us.getPackageName(), PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (applicationInfo != null) {
if ((applicationInfo.flags & applicationInfo.FLAG_SYSTEM) <= 0) {
"應用時長" = (int) (us.getTotalTimeInForeground() / 1000);
"應用名稱" = applicationInfo.loadLabel(getPackageManager()).toString();
}
}
}
}
public class PhoneUtils {
//獲得當天0點時間
public static Date getTimesMorning() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return (cal.getTime());
}
//獲得當天24點時間
public static Date getTimesNight() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 24);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
//獲得當天24點時間戳
public static long getTimesNow() {
return System.currentTimeMillis();
}
}
以上就完成了獲取最近使用的應用時長的功能,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299537.html
標籤:其他
下一篇:Caused by: java.nio.charset.MalformedInputException: Input length = 1/2;
