4

我正在为我的学校开发一个简单的应用程序,它将向您展示网站上的最新更新,但在 AIR 中检查互联网连接似乎有点问题。

我会更具体:

  • 我正在使用 Adob​​e Flash CS6 开发应用程序(使用 AIR for android)

  • 该应用程序包含一个菜单和“互联网框架”,其中的代码实际上不起作用。

  • 我已经尝试了几件事:URLMonitor(like is available = true)、URLLoader(如果在没有互联网连接时发生 IOError) 和 HTMLLoader 之类的东西(很久以前:P,没有成功)

  • URLLoader 工作“正常”,但我还需要知道当有活动的互联网连接时网页是否不可用(404),但在这两种情况下,它只会抛出相同的“流错误”,所以我可以区分它们。这就是为什么它不适合我的需求。

  • URLMonitor 也可以“正常”工作,但问题来了:

在模拟器上测试应用程序时,它可以毫无问题地检测到没有互联网连接。但是,当导出到 .apk 并在我的 android 设备上运行时,它无法成功检测到互联网连接。

这是我的代码:

var monitor:URLMonitor = new URLMonitor(new URLRequest("http://www.google.nl"));
monitor.addEventListener(StatusEvent.STATUS, netConnectivity);
monitor.start();

function netConnectivity(e:StatusEvent):void 
{
    if(e.target.available)
    {
      //checking the content
      output_txt.text += "\ninternet available";
      loader = new URLLoader(new URLRequest(webURL));
      loader.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorLoader);
      loader.addEventListener(Event.COMPLETE, onCompleteLoader);
    }
    else
    {
      //
      //
      //     NO INTERNET CONNECTION AVAILABLE!
      //
      //
      output_txt.text += "\nno internet available";
      popupnoconnection_mc.alpha = 100;
      popupnoconnection_mc.play();
      popupnoconnection_mc.addEventListener(MouseEvent.MOUSE_DOWN, BackToMenu);
    }
    monitor.stop();
}

如您所见,它向 URLMonitor 添加了一个 EventListener,开始检查,该函数检查 Internet 连接的可用性。适用于模拟器,不适用于我的设备。

更有趣的是: 在我的设备上起作用的是互联网连接时。它只会在我的输出字段中显示文本,但在没有互联网连接时不会!此外,在设置了互联网连接的情况下启动应用程序,然后进入此框架,然后返回主菜单,然后关闭互联网,然后再次进入此框架,此代码突然运行良好!

所以它必须与 URLMonitor 的创建有关,并且我猜想在同一帧检查连接,但我需要一点帮助!

我认为这不会太难!

非常感谢您!(抱歉有错别字)

4

1 回答 1

1

您可以使用NetworkInfo来检测是否有互联网连接 - 它适用于 Android。

于 2013-01-27T06:58:50.610 回答