0

Android の SDK、PhoneGap、Eclipse を使用しています。

短編小説: インターネットが利用可能かどうかを cordova-android/phonegap (Java) から確認するにはどうすればよいですか?

長い話: 私のウェブサイトが window.location = " http://mydomain.com " を実行していることを示す PhoneGap アプリで作業しています。

インターネットがなく、ユーザーがリンクをクリックした場合、このリンクが読み込まれないようにする必要があります (したがって、ブラウザー エラー)。

shouldOverrideUrlLoadingCordovaWebViewClientのメソッドをオーバーライドすることにしました。

だから私はそこに条件を置く必要があります

if (internetAvailable) {
    //load url
} else {
    //do not load
}

どうすればこれを達成できますか?

ありがとう

4

1 に答える 1

0

OK、これが私がやったことです:

私の小さなPhoneGapアプリは、を使用して動的Webサイトをロードしwindow.location = "http://mydomain.com"、電話がインターネット接続を利用できる場合にのみ、サイト内を移動できます。

そうでない場合、リンクは何もしません。もちろん、後で代替ビュー、メッセージなどを実装します。しかし、これは機能的なプロトタイプです:

package com.pm.pm;

import android.os.Bundle;
import org.apache.cordova.*;

import org.apache.cordova.CordovaWebViewClient;
import org.apache.cordova.DroidGap;

import android.util.Log;
import android.webkit.WebView;

import android.content.Context;

import android.net.ConnectivityManager;
import android.net.NetworkInfo;


public class MyClass extends DroidGap
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.init();

        CordovaWebViewClient webViewClient = new CustomCordovaWebViewClient(this);
        webViewClient.setWebView(this.appView);
        this.appView.setWebViewClient(webViewClient);

        super.loadUrl(Config.getStartUrl());
    }    

    public class CustomCordovaWebViewClient extends CordovaWebViewClient {

         public CustomCordovaWebViewClient(DroidGap ctx) {
           super(ctx);
         }

         @Override
         public boolean shouldOverrideUrlLoading(WebView view, String url) {
             if (isNetworkAvailable()) {
                 Log.i("TEST", "shouldOverrideUrlLoading, we have internet, loading: " + url);
                 return false;
             }
             Log.i("TEST", "shouldOverrideUrlLoading, NO internet, NOT loading: " + url);
             return true;
         }

         public boolean isNetworkAvailable() {
             ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
             NetworkInfo ni = connec.getActiveNetworkInfo();
             if (ni == null) {
                 // There are no active networks.
                 return false;
             }
             return true;
         }
    }
}
于 2013-06-10T03:38:15.287 に答える