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

来源:互联网 发布:java编程思想 pdf 编辑:程序博客网 时间:2024/06/06 12:44

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

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

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

[java] view plain copy
  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 plain copy
  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 plain copy
  1. <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"  
  2.         tools:ignore="ProtectedPermissions"/>  
就可以运行了。

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

[java] view plain copy
  1. startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));  
跳转到对应的权限设置界面,将我们的运用打开就行了。

下面就是完成图

www



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


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



阅读全文
0 0
原创粉丝点击