Web サイトから最新の更新情報を表示する、私の学校用のシンプルなアプリを開発していますが、AIR でインターネット接続を確認するのは少し問題があるようです。
より具体的に説明します。
アプリの開発に Adobe 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 を作成し、同じフレームで接続を確認する必要があると思いますが、ここで少し手を加える必要があります。
そんなに難しくないと思います!
よろしくお願いします!(誤字脱字すみません)