【问题标题】:android: get list of apps connecting to the internet and their inbound and outbound connectionandroid:获取连接到互联网的应用程序列表及其入站和出站连接
【发布时间】:2017-05-30 01:35:57
【问题描述】:

有没有办法以编程方式获取连接到互联网的应用列表及其入站和出站连接。

考虑做一个不需要root手机的应用程序。

【问题讨论】:

标签: android monitoring


【解决方案1】:

如果您想要一个低级别的解决方案,您可以尝试 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

【讨论】:

  • 我支持 netstat 方法。顺便说一句:很好的发现,这个 netinfo 项目,假设它有效。我只会加两分钱来让设备生根——你不必这样做,你可以将此监控应用程序设置为设备管理员。这是每个 AV 都需要的,它们会监控网络连接和文件系统更改(我的 ESET Mobile 会这样做)。
【解决方案2】:

此信息已在“DataUsage”下的设置中提供。你只需要从那里提取它;看看 - TrafficStats

类似问题 - about app level data consumption

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多