我正面临这个问题。我花了很多时间搜索一些API
或“某物”,可以通过 Wi-Fi 从其他应用程序获取传输的数据(如下图所示)。
有人知道怎么做吗?这里有人尝试过(或已经做过)类似的事情吗?或者有点不同:这可能吗?
目前我认为这是不可能的,因为我认为非系统应用程序无法从设备上安装的其他应用程序中检索数据。但也许我可以“遗漏”一些东西,所以我提出了这个问题,并对任何建议感到高兴。
提前致谢!
我正面临这个问题。我花了很多时间搜索一些API
或“某物”,可以通过 Wi-Fi 从其他应用程序获取传输的数据(如下图所示)。
有人知道怎么做吗?这里有人尝试过(或已经做过)类似的事情吗?或者有点不同:这可能吗?
目前我认为这是不可能的,因为我认为非系统应用程序无法从设备上安装的其他应用程序中检索数据。但也许我可以“遗漏”一些东西,所以我提出了这个问题,并对任何建议感到高兴。
提前致谢!
Class that provides network traffic statistics. These statistics include bytes transmitted and received and network packets transmitted and received, over all interfaces, over the mobile interface, and on a per-UID basis.
这意味着您可以使用getUidTxBytes来获取整个传输的数据,并且到目前为止getUidRxBytes来获取整个接收到的数据。
您可以通过以下方式获取应用程序的UID:
getApplicationInfo().uid
或其他应用程序参考这个
虽然 Sercan 的回答是正确的,但必须警告您,TrafficStats 并不总能保证为您提供正确的统计信息。基本上,TrafficStats 会检查目录 /proc/uid_stat/1094/ 中的文件以及该目录下的各种文件,如 tcp_snd、tcp_rcv 等。在某些设备上,这些(伪)文件不会更新。因此,您应该始终检查 UNSUPPORTED (-1) http://developer.android.com/reference/android/net/TrafficStats.html#UNSUPPORTED的返回值
此外,这些统计数据通常不包括 UDP 数据。因此,对于使用 UDP 的应用程序(如 VoIP 应用程序),您报告的数字将是错误的。有关更多详细信息,请查看 https://code.google.com/p/android/issues/detail?id=32410
在最新的 Android 版本上,还有另一个 /proc 文件可以为您提供很多详细信息。这是在 /proc/self/net/xt_qtaguid/stats。但是这个伪文件只会显示读取它的应用程序的统计信息。任何 Android 应用程序都会尝试读取此文件,它不会获得与任何其他 Android 应用程序相关的统计信息。
为什么不尝试读取包含网络信息的配置文件呢?试试这个: adb shell cd /proc/uid_stat/XXXX(Proc id) cat tcp_rcv/tcp_snd