【问题标题】:How to monitor other apps network usage?如何监控其他应用的网络使用情况?
【发布时间】:2018-01-30 13:13:56
【问题描述】:

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

【问题讨论】:

  • 使用应用监控应用...
  • @B001 我需要将此功能添加到我的应用程序中。
  • 但是为什么要重新发明轮子呢?
  • @B001 我正在开发一个网络信息应用程序。
  • @amirrezash 请检查我的答案。如果它回答了您的问题,请标记为正确

标签: android android-trafficstats


【解决方案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,这是一个系统级权限,不会授予第三方-party 应用程序。 但是,声明权限意味着使用 API 的意图,并且设备用户可以通过设置应用程序授予权限

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

编辑:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多