java - 如何禁用所有网络共享数据的互联网

标签 java android ethernet tethering android-firmware

我在 Android 设备上有一个托管网页的应用程序。如果我通过 Android 热点连接到运行此程序的设备,我可以使用默认 IP 查看页面。

此页面的数据来自互联网。所以Android设备需要能够访问互联网。但是,我不希望连接到设备热点的用户能够访问互联网。我想知道切断 Android 热点与其传出数据连接之间的数据桥的最佳方法是什么。 (我目前正在使用以太网。)

我更喜欢一个可以编辑固件本身的源文件的解决方案,因为这应该是不可逆转的。我可以完全控制源代码和 root。

提前致谢。

最佳答案

所以有人突然建议我查看 android 4.2.2 中安装的 iptables。然而,此解决方案仅在您拥有 root 权限时才有效。

幸运的是,它显示了这一点:

Chain natctrl_FORWARD (1 references)
pkts bytes target     prot opt in     out     source               destination
0     0 natctrl_tether_counters  all  --  eth0   wlan0   0.0.0.0/0            0.0.0.0/0           [goto]  state RELATED,ESTABLISHED
0     0 DROP       all  --  wlan0  eth0    0.0.0.0/0            0.0.0.0/0            state INVALID
0     0 natctrl_tether_counters  all  --  wlan0  eth0    0.0.0.0/0            0.0.0.0/0           [goto]
0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

这条链将数据从以太网传递到 WiFi。因此,如果我在命令行中运行以下命令:

iptables -I natctrl_FORWARD 1 -j DROP

它只是将 DROP 放在顶部并丢弃所有流量。

因此,在应用程序中,您可以使用以下命令运行命令行脚本:

Runtime.getRuntime().exec(new String[]{"su", "-c", "iptables -I natctrl_FORWARD 1 -j DROP"});

关于java - 如何禁用所有网络共享数据的互联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39082975/

相关文章:

java - 无法在 Windows 上创建 native 容器

java - 查找 Galaxy Tab 10.1 的 IP 地址以供应用程序

android - Google+ 登录无法正常工作

java - 如何在 fragment 中使用ListView和onClickListener?

java - 如何将在 fragment 中创建的 ArrayList<String> 传递给主要 Activity

c# - 以太网端口上的 throttle 带宽

tcp - 当以太网接收缓冲区已满时会发生什么

java - .NET REST API 与 Vert.x

java - 如何附加到正在运行的 jar 并调试它?

原始以太网的 Java 库