android定时计算次数,【Android】如何统计App启动次数,首次安装时间

mUsageStatsManager= (UsageStatsManager).getSystemService(Context.USAGE_STATS_SERVICE);

Calendar cal = Calendar.getInstance();

cal.add(Calendar.YEAR, -1);

List queryUsageStats = getUsageStatistics(1);

PackageManager pm = getApplicationContext().getPackageManager();

for(inti =0; i < queryUsageStats.size(); i++) {

UsageStats usageStats = queryUsageStats.get(i);

Class c = usageStats.getClass();

try{

//mLaunchCount 我理解的它就是是app启动次数,这是被@hide修饰的成员变量。只能用反射得到它的值。但是有个现象是,启动次不

//准,从桌面点进去记数2,从后台进入记数1,时间间隔为一天,总的统计次数也不准确

Field field = c.getDeclaredField("mLaunchCount");

field.setAccessible(true);

Field field1 = c.getDeclaredField("mBeginTimeStamp");

field1.setAccessible(true);

Field field2 = c.getDeclaredField("mEndTimeStamp");

field2.setAccessible(true);

ApplicationInfo applicationInfo = pm.getApplicationInfo(usageStats.getPackageName(),                  PackageManager.GET_META_DATA);

String appName = pm.getApplicationLabel(applicationInfo).toString();

PackageInfo packageInfo = pm.getPackageInfo(usageStats.getPackageName(),0);

//应用首次装时间

longfirstInstallTime = packageInfo.firstInstallTime;

//格式化成年月日

String firstInstallTime1 = transferLongToDate("yyyy-MM-dd HH:mm:ss", firstInstallTime);

//应用最后一次更新时间

long lastUpdateTime = packageInfo.lastUpdateTime;

String lastUpdateTime1 = transferLongToDate("yyyy-MM-dd HH:mm:ss", lastUpdateTime);

Log.i("应用:"+usageStats.getPackageName(),"first install time : "+ firstInstallTime1 +" last update time :"+ lastUpdateTime1);

//这部分的时间,我没有搞太明白,请自行验证

long firstTimeStamp = usageStats.getFirstTimeStamp();

String firstTimeStamp1 = transferLongToDate("yyyy-MM-dd HH:mm:ss", firstTimeStamp);

long LastTimeStamp = usageStats.getLastTimeStamp();

String LastTimeStamp1 = transferLongToDate("yyyy-MM-dd HH:mm:ss", LastTimeStamp);

long LastTimeUsed = usageStats.getLastTimeUsed();

String LastTimeUsed1 = transferLongToDate("yyyy-MM-dd HH:mm:ss", LastTimeUsed);

long mBeginTimeStamp = field1.getLong(usageStats);

String mBeginTimeStamp1 = transferLongToDate("yyyy-MM-dd HH:mm:ss", mBeginTimeStamp);

long mEndTimeStamp = field2.getLong(usageStats);

String mEndTimeStamp1 = transferLongToDate("yyyy-MM-dd HH:mm:ss", mEndTimeStamp);

//这部分的时间,我没有搞太明白,请自行验证

Log.i("使用列表...field...","应用名:"+ appName +"\n包名:"+ usageStats.getPackageName() +"\nfirstTimeStamp:"+               firstTimeStamp1

+"\nLastTimeStamp:"+ LastTimeStamp1 +"\nLastTimeUsed:"+ LastTimeUsed1

+",\n启动次数:"+ field.getInt(usageStats)

+",\nmBeginTimeStamp:"+mBeginTimeStamp1+",\nmEndTimeStamp:"+mEndTimeStamp1);

}catch(Exception e) {

e.printStackTrace();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值