2013-06-09 1 views
0

Я работаю с Android SDK, PhoneGap, Eclipse.cordova-android & phonegap - проверить с Java, если есть Интернет

Краткая история: как я могу проверить с помощью cordova-android/phonegap (Java), если есть доступ в Интернет?

Длинная история: Im работает в приложении PhoneGap, которое показывает, что мой сайт делает window.location = "http://mydomain.com".

Если нет Интернета, и пользователь нажимает на ссылку, мне нужно предотвратить загрузку этой ссылки (и, следовательно, ошибку браузера).

Я решил переопределить метод CordovaWebViewClient shouldOverrideUrlLoading.

Так мне нужно поставить там condidition

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

Как я могу добиться этого?

Благодаря

ответ

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; 
     } 
    } 
} 
Смежные вопросы