2017-05-30 48 views
-1

应用列表中有没有一种方法以编程方式获得连接到互联网和他们的入站和出站连接的应用程序列表。安卓:让连接到互联网和他们的入站和出站连接

想做一个这样做的应用程序,不需要根手机。

+0

还有像“网络连接”(https://play.google.com/store/apps/details?id=com.antispycell.connmonitor&hl=en)That做这个现有的应用程序。我在哪里可以找到源代码来做到这一点? –

回答

1

如果你想要一个低级别的解决方案,你可以尝试使用netstat的方法。 在基于Linux的系统上,您可以从/ proc/net/route中读取网络信息。要做到这一点

的一种方法是,包括在你的应用程序一个busybox的二进制文件(一定要看看licencse),然后运行netstat的的busybox,然后读取输出到您的应用程序。

Process process = Runtime.getRuntime().exec("busybox netstat -n"); 
    BufferedReader reader = new BufferedReader(
    new InputStreamReader(process.getInputStream()) 
    process.getOutputStream().close(); 

然后你就可以识别哪些应用程序正在使用的由处理ID列连接,您将获得可与一个应用程序如app_23识别的procces用户,see this answer how to get the app name from the pid

如果你不”要包含busybox二进制文件,你可以尝试自己读取procfs中的信息。 幸运的是,有人已经为你做了这项工作,see this example

+0

我第二次使用netstat方法。顺便说一句:很好找,这个netinfo项目,假设它的工作。我只会添加两个有关设备生根的分钱 - 您不必,您可以将此监控应用程序设置为设备管理员。这就是每个AV所需要的,他们会监视网络连接和文件系统更改(我的ESET Mobile会这样做)。 – Kitet