接收其他应用程序的使用时间数据

时间:2019-03-25 13:33:33

标签: android

我正在处理一个android项目。我需要接收其他应用程序的使用时间。我只需要运行多少应用程序,它们是什么。如何访问这些数据?

我找到了一些有关接收另一个人的SQLite数据库的文章,但是我真的不需要这个。

2 个答案:

答案 0 :(得分:1)

您可以按照以下步骤操作:

  • 通过调用检索当前正在运行的任务的列表 getRunningTasks()
  • 完成每个任务并获取PackageName
  • AppName中获取PackagName
  • 在列表中添加AppName

以下是实现:

private List<String> getRunningAppList()
{
    Set<String> appNameList = new HashSet<>();

    PackageManager pm = getPackageManager();
    ActivityManager aManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

    // Get the list of the tasks that are currently running
    List<ActivityManager.RunningTaskInfo> infoList = aManager.getRunningTasks(Integer.MAX_VALUE);

    for (ActivityManager.RunningTaskInfo taskInfo : infoList)
    {
        // Get the packageNAme
        String pkgName = taskInfo.topActivity.getPackageName();
        String appName = null;
        // Get the appName
        try
        {
            appName = pm.getApplicationLabel(pm.getApplicationInfo(pkgName,PackageManager.GET_META_DATA)).toString();
        } catch (PackageManager.NameNotFoundException e)
        {
            e.printStackTrace();
        }

        // Adding the appName
        appNameList.add(appName);
    }

    return new ArrayList<>(appNameList);
}

答案 1 :(得分:1)

使用UsageStatsUsageStatsManager只是解决该主题的最佳方法。

https://developer.android.com/reference/android/app/usage/UsageStats

UsageStats.getLastTimeUsed()按日期格式通知特定应用程序的上次使用时间。