上午,
我在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
来避免这种情况。
最有效的方法是什么?
答案 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
}