如何监控其他应用程序的网络使用情况?



我使用TrafficStats.getUidRxBytes来获取网络使用情况。它适用于我的应用程序,但对于其他应用程序总是返回 -1(不支持)。如何在没有root权限的情况下获取其他应用程序的网络使用情况?

从 android 7 开始,您只能查询自己的应用流量使用情况。从TraffixStats.getUidRxBytes文档中:

N年开始,这将仅报告调用 UID 的流量统计信息。出于隐私原因,它将返回所有其他 UID 的"不受支持"。要访问属于其他 UID 的历史网络统计信息,请使用NetworkStatsManager

NetworkStatsManager,你可以使用queryDetailsForUid,但正如文档(https://developer.android.com/reference/android/app/usage/NetworkStatsManager.html)所说:

注意:调用querySummaryForDevice(int, String, long, long)或访问调用应用程序以外的应用程序的统计信息需要权限PACKAGE_USAGE_STATS,这是系统级权限,不会授予第三方应用程序。但是,声明权限意味着打算使用 API,设备的用户可以通过"设置"应用程序授予权限

因此,请注意,用户必须为您的应用授予一些特殊权限。

编辑:

我用过一次UsageStatsManager,我认为这就是你要找的:https://developer.android.com/reference/android/app/usage/UsageStatsManager.html#queryUsageStats(int,%20long,%20long)

相关内容

  • 没有找到相关文章

最新更新