0

早晨,

我在我的 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在网页可用时调用来避免这种情况。

最有效的方法是什么?

4

3 回答 3

1

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

if(isOnline()) super.loadUrl(" http://www.external-url.com/webapp ",1000);

您还可以在加载 URL 时添加延迟。

检查网络连接:

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" />
于 2013-10-09T10:00:39.843 回答
0

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

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
}


      } 
    }
于 2013-10-09T10:02:43.120 回答
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
    }
于 2013-10-09T10:21:34.250 回答