在我的应用程序中,我调用 WebServices 并获取 GPRS 值。问题是,当未连接互联网时,我的应用程序会生成“强制关闭”消息。请指导我,它如何产生互联网不可用的消息,或者请连接互联网,它不会产生强制关闭的消息。感谢帮助
也请指导我移动网络。如果它不在我的应用程序上,则生成请在移动网络上的消息。怎么可能???
感谢 Kittu 和 ram Kiran 的帮助:)
在我的应用程序中,我调用 WebServices 并获取 GPRS 值。问题是,当未连接互联网时,我的应用程序会生成“强制关闭”消息。请指导我,它如何产生互联网不可用的消息,或者请连接互联网,它不会产生强制关闭的消息。感谢帮助
也请指导我移动网络。如果它不在我的应用程序上,则生成请在移动网络上的消息。怎么可能???
感谢 Kittu 和 ram Kiran 的帮助:)
private boolean haveNetworkConnection()
{
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo)
{
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
每当您尝试调用 Web 服务时调用此方法
if(haveNetworkConnection())
{
// call the webservice
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
在清单中添加权限
你可以这样做:
//check connection
public boolean isOnline() {
ConnectivityManager cm =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
//alert box to show internet connection error
AlertDialog.Builder Internet_Alert = new AlertDialog.Builder(DinnerDenActivity.this);
// set title
Internet_Alert.setTitle("Attention!");
Internet_Alert.setMessage("This application requires internet connectivity, no internet connection detected");
Internet_Alert.setPositiveButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1)
{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
onQuitPressed();
}
});
Internet_Alert.create().show();
return false;
}
isOnline检查互联网连接
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
此权限应添加到清单文件中。
按照此链接检查您的应用程序中的Internet 连接
在上面的链接中,我们使用警报 Dailog 检查所有类型的互联网连接。您可以在您的应用程序中使用它来避免force close
您的应用程序。
您也可以像这样使用广播接收器
public class NetworkBroadcastReceiver extends BroadcastReceiver{
/*
* (non-Javadoc)
*
* @see android.content.BroadcastReceiver#onReceive(android.content.Context,
* android.content.Intent)
*/
@Override
public void onReceive(Context context, Intent intent) {
boolean isNetworkDown= intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
if(isNetworkDown){
ApplicationInfo.networkAvailable = false;
}else{
ApplicationInfo.networkAvailable = true;
}
}
}
在调用您的网络服务之前,您可以ApplicationInfo.networkAvailable
像这样检查
if(!ApplicationInfo.networkAvailable){
//show msg -> no network connectivity
}else{
//proceed with WS call
}
注册您的接收器CONNECTIVITY_ACTION
。这可以在代码和 AndroidManifest 文件中完成