【问题标题】:How to Cheat Android at checking Connectivity?如何在检查连接时欺骗 Android?
【发布时间】:2013-01-07 09:13:46
【问题描述】:

我正在做一个使用 tun 作为 Android 上的虚拟网络设备的网络应用程序。我关闭了其他可用接口,例如 eth0(用于 WLAN)和 rmnet0(用于 3G/GPRS),但保持 tun0 设备处于活动状态并在路由表中添加规则

ip route add default dev tun0

所以我可以将所有互联网传输重定向到 tun 设备(我在这里所做的与 OpenVPN 相同)。然后我在ping其他IP时看到了数据传输。浏览器和其他一些应用程序运行良好。

但某些 Android 应用在访问网络之前会通过 ConnectivityManager 来检查 Connectivity。由于我关闭了 WIFI 和 3G/GPRS,ConnectivityManager 认为没有连接,这些应用程序将不再访问网络。

所以我的问题是:

如何欺骗 android ConnectiviyManager,让它相信仍然有可用的连接(对于任何类型)?

【问题讨论】:

  • 没有。似乎没有办法做到这一点。所以我只是简单地关闭它?
  • 是的,不幸的是,它本来就是这样工作的

标签: android network-programming tun


【解决方案1】:

我认为您不能这样做,而且您也不想这样做,这是一项系统范围的服务。想象一下,如果您的应用程序依赖于互联网连接,但一些恶意应用程序能够告诉您存在并且使您的应用程序无法完成其操作。这可能会导致严重的问题。

如果您的应用需要相信在某些状态下存在连接,我建议您接口连接/网络类,您可以读取真实状态,然后返回您认为适合您的应用的任何值

【讨论】:

  • 我的应用可以正常使用我的新网络连接,但其他应用不能。
猜你喜欢
  • 1970-01-01
  • 2011-03-07
  • 2010-11-10
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多