android5.0用UsageStatsManager来获取程序运行时间

本来想用PkgUsageStats来获取的,后来看到有人说5.0以后可以直接用UsageStatsManager来获取信息,而不用之前麻烦的反射了,所以试着用了一下。

不多说了,直接贴主要代码

[java] view plaincopy
  1. Calendar beginCal = Calendar.getInstance();
  2. beginCal.add(Calendar.HOUR_OF_DAY, -1);
  3. Calendar endCal = Calendar.getInstance();
  4. UsageStatsManager manager=(UsageStatsManager)getApplicationContext().getSystemService(USAGE_STATS_SERVICE);
  5. List<UsageStats> stats=manager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,beginCal.getTimeInMillis(),endCal.getTimeInMillis());

这里直接调用了USageStatsManager的queryUsageStas()的方法,里面3个参数,分别是:

  • 为int的字段,时间的统计的单位,即小时,天,月,年这类的
  • 开始的时间
  • 结束的时间

然后我们就能得到UsageStats的list,UsageStats可以提供几个方法给我们,可以得到运行的总时长,最后运行的时间,应用的包名。

[java] view plaincopy
  1. StringBuilder sb=new StringBuilder();
  2. for(UsageStats us:stats){
  3. try {
  4. <span style="white-space:pre">    </span>PackageManager pm=getApplicationContext().getPackageManager();
  5. ApplicationInfo applicationInfo=pm.getApplicationInfo(us.getPackageName(),PackageManager.GET_META_DATA);
  6. if((applicationInfo.flags&applicationInfo.FLAG_SYSTEM)<=0){
  7. SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
  8. String t=format.format(new Date(us.getLastTimeUsed()));
  9. sb.append(pm.getApplicationLabel(applicationInfo)+"\t"+t+"\t"+getTimeFromInt(us.getTotalTimeInForeground())+"\n");
  10. }
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. }

这里还用到的就是PackageManager,这里能用这个类能通过包名来得到应用的信息,我这里只是简单的获得应用的名称,没有获得其他的信息。

然后在AndroidManifest.xml里加上一句

[java] view plaincopy
  1. <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"
  2. tools:ignore="ProtectedPermissions"/>

就可以运行了。

但是运行时会发现并没有应用,因为我们需要打开对应的权限。可以在代码里加一句

[java] view plaincopy
  1. startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));

跳转到对应的权限设置界面,将我们的运用打开就行了。

下面就是完成图

重要的事情多说一遍:只是针对5.0以上的系统

权限一定要给:不给没得玩

android 获取手机中应用运行的时长和次数相关推荐

  1. Android获取mp3音频文件播放总时长

    Android获取mp3音频文件播放总时长 一般是需要文件的绝对路径,需要读取文件,转成媒体类解析,最好获取播放时长,然后关闭资源. /** * 获取音频文件的总时长大小 * * @param fil ...

  2. Android获取手机中外置内存卡、内置内存卡、手机内存路径

    http://www.open-open.com/code/view/1433585940578 首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己 ...

  3. Android获取手机中的所有音乐地址

    //获取手机中的所有音乐 public static LinkedHashMap<Integer, MusicDatas> getAllMusicFile(Context context) ...

  4. Android获取手机中外置内存卡 内置内存卡 手机内存路径

    http://www.open-open.com/code/view/1433585940578 首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己 ...

  5. Android 获取手机中微信聊天记录

    首先我们要知道,微信的聊天记录一般是不提供给我们获取的,所以一般情况下我们手机没root的话就拿不到了.就算是root后的手机,想要获取微信的EnMicroMsg.db文件并且解密它.打开它也有点难度 ...

  6. Android 获取手机中微信聊天记录并后台发送到邮箱

    实验软件 :Android Studio 实验设备:Root过的真机一部或者夜神模拟器 测试效果 废话不多说  直接上代码 获取手机微信数据库目录并发送邮件 class CoreService : I ...

  7. Android 获取手机中的图片信息的两种方法

    1, Android 使用ContentProvider扫描手机中的图片 // 必须在查找前进行全盘的扫描,否则新加入的图片是无法得到显示的(加入对sd卡操作的权限)//todo 仅限于android ...

  8. android 获取图片上某一个文字位置_android 获取手机中的所有图片或某一目录下的图片方法...

    获取手机中的所有图片,并过滤获取某一目录下的图片.(注释掉的代码可以按照目录分组) private void getAllPhotoInfo() { new Thread(new Runnable() ...

  9. Android获取系统相册图片选中地址,获取手机中的所有图片地址自定义相册

    一.获取手机中的值 1.首先在使用读写sd卡权限 2.获取手机中的所有图片: 注意代码中的getGalleryPhotos(getContentResolver()) 方法获取所有地址 获取所有图片地 ...

最新文章

  1. 钉钉密聊安不安全 钉钉密聊别人能看到吗
  2. hasOwnProperty.call
  3. Android-入门学习笔记-图片和外观改善
  4. 从泰勒展开到牛顿迭代
  5. 联想服务器如何进入pe系统,如何制作支持Legacy BIOS和UEFI BIOS两种模式启动的Windows PE...
  6. Unity 打包微信
  7. 一个线性四叉树编码的试题
  8. CodeBook算法
  9. matlab距离平方和公式推导,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?...
  10. Flutter技术在会展云中大显身手
  11. oce专项认证 oracle_Oracle Certification Program | Oracle 中国
  12. Flask-SQLAlchemy牛刀小试
  13. Network App Recommend
  14. html/css简单描述
  15. pyqt UI设计以及pyuic工具的使用
  16. 研发效能系列----开源的数据库版本管理工具Flyway
  17. 人体姿态估计-Human Pose Estimation (2021)
  18. SSID, BSSID, ESSID
  19. yanzhenjie:permission:1.0.5 使用
  20. 2017c语言考核册答案,2017年C语言考试试题附答案

热门文章

  1. 1、Go爬虫(http、goquery和colly)
  2. 微信公众号授权登录weixin4j开发
  3. 人工智能火爆 国内这几家计算机视觉公司值得关注
  4. PHP打印调用堆栈信息,用于程序调试
  5. python数据可视化--pyecharts生成图表
  6. 美的集团美仁半导体目标10年内晋身全球领导品牌;腾讯索尼等游戏产业龙头战略投资优必达 | 美通企业日报...
  7. unity基础开发----unity获取外部设备(方向盘)按键
  8. Js逆向案例—网易云音乐
  9. Echarts动态数据折线图
  10. golang入门项目—日志收集