如何根据网络状态在Android应用中加载网址

时间:2013-10-09 09:50:11

标签: android cordova

上午,

我在Android应用中使用以下代码来加载外部托管的网络应用 这工作正常,看起来比我预期的要好(没有webview导航按钮)

public class MainActivity extends DroidGap {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    super.loadUrl("http://www.external-url.com/webapp");
  } 
}

但是,如果服务器关闭或设备没有互联网连接,我会看到丑陋的Android“网页不可用”页面。我想通过仅在网页可用时调用super.loadUrl来避免这种情况。

最有效的方法是什么?

3 个答案:

答案 0 :(得分:1)

它通常会来,你如何克服这个问题只是检查网络连接并仅在连接可用时加载URL,否则只显示对话框。

如果(isOnline())     super.loadUrl( “http://www.external-url.com/webapp”,1000);

您也可以在加载网址时添加延迟。

检查网络连接:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting())    // netInfo.isConnected is used if you confirmly want the network connection.

   {
            return true;
        }
        return false;
    }

还要将以下权限添加到Android Manifest

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

答案 1 :(得分:0)

请尝试以下操作,首先检查互联网是否可用,然后加载网址或显示警告或其他任何内容:

<强> DetectConnection.java:

    import android.content.Context;
    import android.net.ConnectivityManager;

    public class DetectConnection {
        /*
         * Checking internet connection
         */
        public static boolean checkInternetConnection(Context context) {

            ConnectivityManager con_manager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            if (con_manager.getActiveNetworkInfo() != null
                    && con_manager.getActiveNetworkInfo().isAvailable()
                    && con_manager.getActiveNetworkInfo().isConnected()) {
                return true;
            } else {
                return false;
            }
        }
    }

<强> MainActivity.java:

 public class MainActivity extends DroidGap {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    if (DetectConnection.checkInternetConnection(ViewNotifications.this)) {
                super.loadUrl("http://www.external-url.com/webapp");
            }else{
//Show warning
}


      } 
    }

答案 2 :(得分:0)

我希望这对你有用

           public class Util {
public static boolean isNetworkAvailable(Activity activity) {
    ConnectivityManager connectivity = (ConnectivityManager) activity
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}}

并在 -

中使用它
   if (Util.isNetworkAvailable(Home.this)) {
    // do your coding here
    }