首页 > 解决方案 > 获取手机中正在运行的应用程序列表

问题描述

我是安卓新手。我正在开发一个 android 应用程序,我需要一个功能,例如收集所有打开的 Android 应用程序信息(版本 10,11)。

有人可以帮我吗?

标签: android

解决方案


您可以使用UsageStatsManager. 要使用它,您需要添加PACKAGE_USAGE_STATS到清单中,并且用户必须从设置中授予访问权限。

注意:此 API 上的大多数方法都需要权限 android.permission.PACKAGE_USAGE_STATS。但是,声明权限意味着使用 API 的意图,并且设备的用户仍然需要通过设置应用程序授予权限。请参阅 Settings.ACTION_USAGE_ACCESS_SETTINGS。仅返回调用包信息的方法不需要此权限。例如 getAppStandbyBucket() 和 queryEventsForSelf(long, long)。

当您获得权限时,您可以调用此函数:

科特林:

val usm = getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
val time = System.currentTimeMillis()
val appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time)

爪哇:

UsageStatsManager usm = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
Long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time);

queryUsageStats

获取给定时间范围内的应用程序使用情况统计信息,按指定时间间隔聚合。返回的列表将包含每个包的一个或多个对象,其使用情况数据至少涵盖给定时间范围。注意:时间范围可以扩展到最接近的整个间隔周期。

区间常数:

  • INTERVAL_DAILY
  • INTERVAL_WEEKLY
  • INTERVAL_MONTHLY
  • INTERVAL_YEARLY
  • INTERVAL_BEST

如果您需要更多信息,您可以查看内容。


推荐阅读