cordova-android& phonegap - 如果有可用的Internet,请从Java查询

时间:2013-06-09 22:39:21

标签: java cordova

我正在使用Android的SDK,PhoneGap,Eclipse。

简短的故事:如果有可用的互联网,如何从cordova-android / phonegap(Java)查看?

长篇故事:我正在使用PhoneGap应用程序,该应用程序显示我的网站正在执行window.location =“http://mydomain.com”。

如果没有互联网且用户点击链接,我需要阻止加载此链接(因此浏览器错误)。

我决定覆盖CordovaWebViewClient的shouldOverrideUrlLoading方法。

所以我需要把它放在那里

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

我怎样才能做到这一点?

由于

1 个答案:

答案 0 :(得分:0)

好的,所以这就是我的所作所为:

我的小PhoneGap应用程序使用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;
         }
    }
}