美文网首页
Android_System:AppUsageStatistic

Android_System:AppUsageStatistic

作者: 北方的天空2000 | 来源:发表于2017-04-03 11:20 被阅读47次

    简介

    UsageStatics是记录app使用统计分析数据的,比如:最后一是使用的时间/包名,这个是需要权限的

    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
    

    效果图

    这里写图片描述 这里写图片描述 这里写图片描述

    类和方法

    方法 说明
    UsageStaticsManager -- app使用统计的管理者
    -- queryUsageStats (int intervalType, long beginTime, long endTime) 按照条件查询,结果是List<UsageStats>,API>=21
    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<UsageStats> 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<UsageStats> {
    @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

    相关文章

      网友评论

          本文标题:Android_System:AppUsageStatistic

          本文链接:https://www.haomeiwen.com/subject/cugnottx.html