1

在我的应用程序中,我调用 WebServices 并获取 GPRS 值。问题是,当未连接互联网时,我的应用程序会生成“强制关闭”消息。请指导我,它如何产生互联网不可用的消息,或者请连接互联网,它不会产生强制关闭的消息。感谢帮助

也请指导我移动网络。如果它不在我的应用程序上,则生成请在移动网络上的消息。怎么可能???

感谢 Kittu 和 ram Kiran 的帮助:)

4

4 回答 4

4
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"/> 在清单中添加权限

于 2012-11-22T05:23:55.250 回答
0

你可以这样做:

//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" />

此权限应添加到清单文件中。

于 2012-11-22T05:27:59.650 回答
0

按照此链接检查您的应用程序中的Internet 连接

在上面的链接中,我们使用警报 Dailog 检查所有类型的互联网连接。您可以在您的应用程序中使用它来避免force close您的应用程序。

于 2012-11-22T06:07:03.830 回答
0

您也可以像这样使用广播接收器

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 文件中完成

于 2012-11-22T05:40:46.430 回答