Android - 如何防止应用程序通过其他应用程序访问Internet

时间:2015-06-29 09:46:33

标签: android internet-connection

TrafficStats为我们提供了有关哪个应用程序消耗bandwith的信息。

我想编写一个应用程序,可以在需要时禁用/启用其他应用程序的互联网使用。

我看到有一些谷歌播放应用程序正在这样做,但如何?

2 个答案:

答案 0 :(得分:0)

private void setMobileDataEnabled(Context context, boolean enabled) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
    final ConnectivityManager conman = (ConnectivityManager)  context.getSystemService(Context.CONNECTIVITY_SERVICE);
    final Class conmanClass = Class.forName(conman.getClass().getName());
    final Field connectivityManagerField = conmanClass.getDeclaredField("mService");
    connectivityManagerField.setAccessible(true);
    final Object connectivityManager = connectivityManagerField.get(conman);
    final Class connectivityManagerClass =  Class.forName(connectivityManager.getClass().getName());
    final Method setMobileDataEnabledMethod = connectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
    setMobileDataEnabledMethod.setAccessible(true);

    setMobileDataEnabledMethod.invoke(connectivityManager, enabled);
}

别忘了将此行添加到您的清单文件

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

答案 1 :(得分:-1)

考虑使用iptables

好的例子(显示如何编写防火墙程序)是orWall

  

将您的应用置于Orbot后面并一次性阻止所有不需要的流量。

Orwall page also pointing to GitHub source Codes

  

“这不是一个解决方案。这只是另一个程序正在做这件事。我问的是如何编写这样的程序..哪个可以启用或禁用另一个应用程序的Internet访问。所以-1”< / em>的

你知道怎么读吗?

iptables是一个用户空间应用程序,允许系统管理员配置Linux内核防火墙(实现为不同的Netfilter模块)及其存储的链和规则提供的表。目前不同的内核模块和程序用于不同的协议; iptables适用于IPv4,ip6tables适用于IPv6,arptables适用于ARP,ebtables适用于以太网帧。

iptables需要提升权限才能运行,必须由root用户执行,否则无法正常运行。在大多数Linux系统上,iptables安装为/ usr / sbin / iptables并记录在其手册页中,可以在安装时使用man iptables打开。它也可以在/ sbin / iptables中找到,但由于iptables更像是服务而不是“基本二进制”,所以首选位置仍为/ usr / sbin。

术语iptables也常用于包含性地引用内核级组件。 x_tables是内核模块的名称,该模块承载所有四个模块使用的共享代码部分,该模块还提供用于扩展的API;随后,Xtables或多或少地用于指代整个防火墙(v​​4,v6,arp和eb)架构。

iptables的后续版本是nftables,它已合并到内核版本3.13中的Linux内核主线,该版本于2014年1月19日发布

origin: iptables - wikipedia