【发布时间】:2017-05-30 01:35:57
【问题描述】:
有没有办法以编程方式获取连接到互联网的应用列表及其入站和出站连接。
考虑做一个不需要root手机的应用程序。
【问题讨论】:
-
现有应用程序,如“网络连接”(play.google.com/store/apps/… 会这样做。我在哪里可以找到源代码呢?
标签: android monitoring
有没有办法以编程方式获取连接到互联网的应用列表及其入站和出站连接。
考虑做一个不需要root手机的应用程序。
【问题讨论】:
标签: android monitoring
如果您想要一个低级别的解决方案,您可以尝试 netstat 方法。 在基于 linux 的系统上,您可以从 /proc/net/route 读取网络信息。
一种方法是在您的应用程序中包含一个busybox二进制文件(确保查看许可证)并运行busybox netstat,然后将输出读入您的应用程序。
Process process = Runtime.getRuntime().exec("busybox netstat -n");
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream())
process.getOutputStream().close();
然后你可以通过进程id列识别哪个应用正在使用哪个连接,你会得到可以通过app_23,see this answer how to get the app name from the pid等应用识别的procces用户
如果您不想包含busybox 二进制文件,您可以尝试自己从procfs 中读取信息。 幸运的是,有人已经为您完成了这项工作,see this example。
【讨论】:
此信息已在“DataUsage”下的设置中提供。你只需要从那里提取它;看看 - TrafficStats。
【讨论】: