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