0

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

4

1 回答 1

1

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

N这里开始只会报告调用 UID 的流量统计信息。出于隐私原因,它将为所有其他 UID 返回 UNSUPPORTED。要访问属于其他 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)

于 2018-01-30T13:30:35.960 回答