Android 接收其他申请';使用时间数据

Android 接收其他申请';使用时间数据,android,Android,我在做一个android项目。我需要接收其他应用程序的使用时间。我只需要知道有多少应用程序正在运行,它们是什么。我如何访问这些类型的数据 我找到了一些关于接收他人的SQLite DB的文章,但我真的不需要这些。您可以按照以下步骤操作: private List<String> getRunningAppList() { Set<String> appNameList = new HashSet<>(); PackageManager pm =

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


我找到了一些关于接收他人的SQLite DB的文章,但我真的不需要这些。

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

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);
}
  • 通过调用获取当前正在运行的任务的列表
  • 完成每个任务并检索
    PackageName
  • 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);
}
private List getRunningAppList()
{
Set appNameList=newhashset();
PackageManager pm=getPackageManager();
ActivityManager aManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
//获取当前正在运行的任务的列表
List infoList=aManager.getRunningTasks(Integer.MAX_值);
对于(ActivityManager.RunningTaskInfo任务信息:信息列表)
{
//给我拿包
字符串pkgName=taskInfo.topActivity.getPackageName();
字符串appName=null;
//获取appName
尝试
{
appName=pm.getApplicationLabel(pm.getApplicationInfo(pkgName,PackageManager.GET_META_DATA)).toString();
}捕获(PackageManager.NameNotFounde异常)
{
e、 printStackTrace();
}
//添加appName
appNameList.add(appName);
}
返回新的ArrayList(appNameList);
}

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

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);
}
  • 通过调用获取当前正在运行的任务的列表
  • 完成每个任务并检索
    PackageName
  • 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);
}
private List getRunningAppList()
{
Set appNameList=newhashset();
PackageManager pm=getPackageManager();
ActivityManager aManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
//获取当前正在运行的任务的列表
List infoList=aManager.getRunningTasks(Integer.MAX_值);
对于(ActivityManager.RunningTaskInfo任务信息:信息列表)
{
//给我拿包
字符串pkgName=taskInfo.topActivity.getPackageName();
字符串appName=null;
//获取appName
尝试
{
appName=pm.getApplicationLabel(pm.getApplicationInfo(pkgName,PackageManager.GET_META_DATA)).toString();
}捕获(PackageManager.NameNotFounde异常)
{
e、 printStackTrace();
}
//添加appName
appNameList.add(appName);
}
返回新的ArrayList(appNameList);
}

使用
UsageStats
UsageStatsManager
是解决此问题的最佳方法


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

使用
UsageStats
UsageStatsManager
是解决此主题的最佳方法


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

您是否选中了此选项是的,但此代码仅显示我正在运行的应用程序信息,我需要当前设备上正在运行的应用程序的名称。好的,请检查我的答案。您是否检查了此答案?是的,但此代码仅显示我正在运行的应用程序信息,我需要当前设备上正在运行的应用程序的名称。好的,请检查我的答案。Sabbir,我不知道您为什么不尊重我的意见。getRunningTasks不推荐使用。我已经检查了你的评论,但是没有用。我非常抱歉。您的评论“是的,但此代码仅显示我正在运行的应用程序信息,我需要当前设备上正在运行的应用程序的名称。”这并不意味着。我知道getRunningTasks()已被弃用,但我认为它会起作用。但是,您可以使用getRunningAppProcesses()方法而不是getRunningTasks(Integer.MAX_值)。它们只显示我的应用程序的名称。尊重我的解决方案,兄弟,我不知道你为什么不尊重我的意见。getRunningTasks不推荐使用。我已经检查了你的评论,但是没有用。我非常抱歉。您的评论“是的,但此代码仅显示我正在运行的应用程序信息,我需要当前设备上正在运行的应用程序的名称。”这并不意味着。我知道getRunningTasks()已被弃用,但我认为它会起作用。但是,您可以使用getRunningAppProcesses()方法而不是getRunningTasks(Integer.MAX_值)。它们只显示我的应用程序的名称。尊重我的解决方案,兄弟。