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

时间:2018-01-30 13:13:57

标签: android android-trafficstats

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

1 个答案:

答案 0 :(得分:1)

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

  

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)