4

Web サイトから最新の更新情報を表示する、私の学校用のシンプルなアプリを開発していますが、AIR でインターネット接続を確認するのは少し問題があるようです。

より具体的に説明します。

  • アプリの開発に Adob​​e Flash CS6 を使用しています (AIR for android を使用)

  • アプリには、メニューと、コードが実際には機能しない「インターネット フレーム」が含まれています。

  • 私はすでにいくつかのことを試しました.

  • URLLoader は「問題なく」動作しますが、アクティブなインターネット接続があるときに Web ページが利用できない (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();
}

ご覧のとおり、EventListener を URLMonitor に追加し、チェックを開始し、関数がインターネット接続の可用性をチェックします。エミュレータでは動作しますが、私のデバイスでは正しく動作しません。

さらに興味深いの は、私のデバイスで機能するのは、インターネットが接続されている場合です。出力フィールドにテキストが表示されるだけですが、インターネット接続がない場合は表示されません! また、インターネット接続が設定された状態でアプリを起動し、このフレームに入り、メインメニューに戻り、インターネットをオフにしてから、このフレームに再び入ると、このコードは突然うまく機能します!

したがって、URLMonitor を作成し、同じフレームで接続を確認する必要があると思いますが、ここで少し手を加える必要があります。

そんなに難しくないと思います!

よろしくお願いします!(誤字脱字すみません)

4

1 に答える 1

1

NetworkInfoを使用して、インターネット接続があるかどうかを検出できます。これは Android で動作します。

于 2013-01-27T06:58:50.610 に答える