【问题标题】:Wait until network is available in Android emulator (possibly using adb)等到网络在 Android 模拟器中可用(可能使用 adb)
【发布时间】:2015-01-21 16:40:17
【问题描述】:

我正在使用标准的 Google 的 Android 模拟器进行一些测试。我已经弄清楚了大部分内容,例如 A) 等待设备 (adb wait-for-device) B) 等待启动完成 (adb shell getprop sys.boot_completed)、C) 解锁设备 (adb shell input keyevent 82) 甚至 D) 启动应用程序 ( adb shell monkey -p PACKAGE_NAME -c android.intent.category.LAUNCHER 1)。

我现在缺少的一件事是等待网络。基本上,在我得到sys.boot_completed 之后,3G 显示在顶部之前需要很多秒。即使我很早就可以进行shell ping 10.0.2.2,但在显示3G 之前,应用程序的网络连接不可用。如果重要的话,我正在使用代理(通过-http-proxy emulator 命令行参数)。

所以我想做的是在我启动我的应用程序之前找到一种方法来确保模拟器具有网络连接。有没有办法用adb 或任何其他方式做到这一点?我无法修改原始应用程序。

【问题讨论】:

  • 你的 adb shell 有 ping 吗?或者,您可以启动浏览器或小型自定义应用程序以访问您的开发机器上的服务器(通过代理)并等待该流量被听到。
  • 如果您可以使用单独的应用程序来测试互联网连接。一个简单的检查连接,如果没有连接等待广播接收器,当有互联网时。当它找到互联网时,它(连接测试应用程序)启动 appYourApp。
  • 是的,在没有显示3G 时,ping 到 10.0.2.2 很早就可以工作。启动自定义应用程序可能是完美的,除非我不知道如何构建一个。在请求最终成功之前,我需要一些东西来请求 HTTP 资源。启动浏览器听起来也是个好主意,只是它不是很轻量级。我认为wget 会派上用场,但它不可用。

标签: android android-emulator adb


【解决方案1】:

要了解当前网络状态,请检查gsm.network.type 系统属性的值。更详细的信息可以解析dumpsys connectivity的输出

【讨论】:

  • 我假设您的意思是getprop gsm.network.type,它在3G 出现之前很早就返回UMTS。所以不幸的是,这行不通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多