我在Android上使用tun作为虚拟网络设备进行网络应用。我关闭了其他可用的接口,例如eth0(用于WLAN)和rmnet0(用于3G / GPRS),但保持我的tun0设备处于活动状态并在路由表中添加规则
ip route add default dev tun0
所以我可以将所有互联网转移重定向到tun设备(我在这里做的与OpenVPN相同)。然后,当我ping其他IP时,我看到了数据传输。浏览器和其他一些应用程序工作正常。
但是一些Android应用程序会在访问netwrok之前通过ConnectivityManager检查连接。自从我关闭WIFI& 3G / GPRS,ConnectivityManager认为没有连接,这些应用程序将不再访问网络。
所以我的问题是:
如何 CHEAT android ConnectiviyManager,让它相信仍有可用的连接(对于任何类型)?
答案 0 :(得分:0)
我认为你不能做到这一点,你不会想要,这是一个系统范围的服务。想象一下,如果您的应用程序依赖于互联网连接,但某些恶意应用程序能够告诉您存在并使您的应用无法完成其操作。这可能会导致严重的问题。
如果您的应用需要相信某些州有连接,我建议您连接连接/网络类,您可以阅读真实状态,然后返回您认为适合您的应用的任何值