android5.0用UsageStatsManager来获取程序运行时间
2016-06-20 21:40
465 查看
android5.0用UsageStatsManager来获取程序运行时间
本来想用PkgUsageStats来获取的,后来看到有人说5.0以后可以直接用UsageStatsManager来获取信息,而不用之前麻烦的反射了,所以试着用了一下。
不多说了,直接贴主要代码
为int的字段,时间的统计的单位,即小时,天,月,年这类的
开始的时间
结束的时间
然后我们就能得到UsageStats的list,UsageStats可以提供几个方法给我们,可以得到运行的总时长,最后运行的时间,应用的包名。
这里还用到的就是PackageManager,这里能用这个类能通过包名来得到应用的信息,我这里只是简单的获得应用的名称,没有获得其他的信息。
然后在AndroidManifest.xml里加上一句
但是运行时会发现并没有应用,因为我们需要打开对应的权限。可以在代码里加一句
下面就是完成图
本来想用PkgUsageStats来获取的,后来看到有人说5.0以后可以直接用UsageStatsManager来获取信息,而不用之前麻烦的反射了,所以试着用了一下。
不多说了,直接贴主要代码
Calendar beginCal = Calendar.getInstance(); beginCal.add(Calendar.HOUR_OF_DAY, -1); Calendar endCal = Calendar.getInstance(); UsageStatsManager manager=(UsageStatsManager)getApplicationContext().getSystemService(USAGE_STATS_SERVICE); List<UsageStats> stats=manager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,beginCal.getTimeInMillis(),endCal.getTimeInMillis());这里直接调用了USageStatsManager的queryUsageStas()的方法,里面3个参数,分别是:
为int的字段,时间的统计的单位,即小时,天,月,年这类的
开始的时间
结束的时间
然后我们就能得到UsageStats的list,UsageStats可以提供几个方法给我们,可以得到运行的总时长,最后运行的时间,应用的包名。
StringBuilder sb=new StringBuilder(); for(UsageStats us:stats){ try { <span style="white-space:pre"> </span>PackageManager pm=getApplicationContext().getPackageManager(); ApplicationInfo applicationInfo=pm.getApplicationInfo(us.getPackageName(),PackageManager.GET_META_DATA); if((applicationInfo.flags&applicationInfo.FLAG_SYSTEM)<=0){ SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); String t=format.format(new Date(us.getLastTimeUsed())); sb.append(pm.getApplicationLabel(applicationInfo)+"\t"+t+"\t"+getTimeFromInt(us.getTotalTimeInForeground())+"\n"); } } catch (Exception e) { e.printStackTrace(); } }
这里还用到的就是PackageManager,这里能用这个类能通过包名来得到应用的信息,我这里只是简单的获得应用的名称,没有获得其他的信息。
然后在AndroidManifest.xml里加上一句
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions"/>就可以运行了。
但是运行时会发现并没有应用,因为我们需要打开对应的权限。可以在代码里加一句
startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));跳转到对应的权限设置界面,将我们的运用打开就行了。
下面就是完成图
相关文章推荐
- Android中的Activity4中启动模式使用场景
- Android Studio教程--Android Studio 2.1安装与配置
- 安卓中计算 TextView 的宽高、打点
- git的创建新项目的使用
- Android-Android studio 出现 Error: NDK integration is deprecated in the current plugin. 问题解决
- android 连接 wcf rest注意点
- Android(Java)之多线程结果返回——Future 、FutureTask、Callable、Runnable
- LruCache详解之 Android 内存优化
- "xxx" is not translated in "en" (English)
- android中自定义dialog的使用方法简介
- android 开发Handler源码剖析
- android 开发Handler源码剖析
- android 开发Handler源码剖析
- Android ViewDragHelper完全解析 自定义ViewGroup神器
- 菜鸟学android之二--OnClickListener的三种实现方法 ,acticity之间的传值,数值格式化(附实例:计算BMI数值)
- 基于Android Studio的内存泄漏检测与解决全攻略
- Android Studio配置SVN服务器
- 【读书笔记】Android平台的漏洞挖掘和分析
- Android开发笔记(十三)乐学成语代码实现
- android AsyncTask封装学习