日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Android獲取Apk使用信息

作者:菜鳥xiaowang 更新時間: 2022-10-11 編程語言

1.配置權限

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

2.代碼邏輯

 public void getUseTime(){
        UsageStatsManager usm = (UsageStatsManager)getSystemService(Context.USAGE_STATS_SERVICE);
        Calendar calendar = Calendar.getInstance();
        long endTime = calendar.getTimeInMillis();
        calendar.add(Calendar.DAY_OF_WEEK, -2);//最近兩周啟動過所用app的List
        long startTime = calendar.getTimeInMillis();
/**
 *
 *   queryUsageStats第一個參數是根據后面的參數獲取合適數據的來源,有按天,按星期,按月,按年等。
 *   UsageStatsManager.INTERVAL_BEST
 *   UsageStatsManager.INTERVAL_DAILY 按天
 *   UsageStatsManager.INTERVAL_WEEKLY 按星期
 *   UsageStatsManager.INTERVAL_MONTHLY 按月
 *   UsageStatsManager.INTERVAL_YEARLY 按年
 */

        List<UsageStats> list = usm.queryUsageStats(UsageStatsManager.INTERVAL_YEARLY,startTime,endTime);
//需要注意的是5.1以上,如果不打開此設置,queryUsageStats獲取到的是size為0的list;
        if(list.size()==0)
        {
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
                try {
                    startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
                } catch (Exception e) {
                    Toast.makeText(this,"無法開啟允許查看使用情況的應用界面",Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                }
            }
        }else{
            for(UsageStats usageStats :list){
                Log.e("TAG",usageStats.getPackageName());//獲取包名
                Log.e("TAG",usageStats.getFirstTimeStamp()+"");//獲取第一次運行的時間
                Log.e("TAG",usageStats.getLastTimeStamp()+"");//獲取最后一次運行的時間
                Log.e("TAG",usageStats.getTotalTimeInForeground()/1000+"");//獲取總共運行的時間 單位毫秒
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String format = sdf.format(usageStats.getFirstTimeStamp());// 格式化時間
                Log.e("TAG",format);

                SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss");
                String timeLong = time.format(usageStats.getTotalTimeInForeground()- TimeZone.getDefault().getRawOffset());// 格式化使用時長
                Log.e("TAG",timeLong);
                try{
                    Field field = usageStats.getClass().getDeclaredField("mLaunchCount");
                    Log.e("TAG",field.get(usageStats).toString());//獲取應用啟動次數
                }catch (Exception e)
                {
                    e.printStackTrace();;
                }
}

原文鏈接:https://blog.csdn.net/xiaowang_lj/article/details/127247863

欄目分類
最近更新