android - 获取手机中正在运行的应用程序列表
问题描述
我是安卓新手。我正在开发一个 android 应用程序,我需要一个功能,例如收集所有打开的 Android 应用程序信息(版本 10,11)。
有人可以帮我吗?
解决方案
您可以使用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
如果您需要更多信息,您可以查看此内容。
推荐阅读
- c# - 在 .Net Core 3.1 中使用 Microsoft Graph 获取用户信息时出现异常
- javascript - 用JS在浏览器中读取文件
- python - 在 tempfile.TemporaryDirectory 中创建目录时出现问题
- php - 使用 amadeus 航班创建订单 API 生成 PNR 问题
- java - 当该数据库生成其字段时,如何告诉 Hibernate 返回与数据库同步的已保存实体
- ruby-on-rails - Rails 5.1、Rails 6.1.3 回顾 v3 gem 集成
- java - 将 Vaadin 8 插件与 Vaadin 14 Java 一起使用
- c# - GetDiscoveryDocumentAsync:“提供了无效的请求 URI。请求 URI 必须是绝对 URI 或必须设置 BaseAddress。”
- angular - Angular - 在 Laravel API 中调用 null {"exception":"[object] (Error(code: 0)) 上的成员函数 getClientOriginalExtension()
- swift - 检查 Swift 类是否继承自泛型类