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

问题描述 投票:0回答:2

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

我发现了一些关于接收另一个SQLite DB的文章,但我真的不需要这个。

android
2个回答
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
投票

使用UsageStatsUsageStatsManager只是这个主题的最佳方法。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.