android – 检查Internet连接是否可用?

我正在开发在线应用程序. [问题]当互联网停机或不可用时,它给我错误[强制关闭],我试图使用broadCast接收器处理但不满足精确解决方案,寻找更好的解决方案.
public class MybroadcastReceiver extends broadcastReceiver {

@Override
public void onReceive(final Context context,final Intent intent) {

    NetworkInfo info = intent
            .getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);

    if (null != info) {

        String state = info.getState().toString();

        if (state.equalsIgnoreCase("CONNECTED")) {
            SplashScreen.isWiFiConnected = true;
            Log.i("isWifiConnected","=================TRUE");
        } else {
            SplashScreen.isWiFiConnected = false;
            Log.i("isWifiConnected","=================FALSE");
        }

    }

}

}

谢谢.

解决方法

static String data = null;
private static HttpPost httppost;
private static HttpParams httpParameters;
private static int timeoutConnection = 30000;
private static HttpClient httpclient = null;
private static HttpResponse response = null;
private static int responseCode=0;
public static ConnectivityManager mConnectivityManager;
public static NetworkInfo mNetworkInfo;
public static boolean isNetError=false;

/** Post Http data and returns final string and status on network */

public static void postHttp(String Url,Activity mActivity) {
try {
    isNetError=false;

    mConnectivityManager= (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
    mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();

    if (mNetworkInfo != null && mNetworkInfo.isConnectedOrConnecting())
    {
        httppost = new HttpPost(Url);
        httpParameters = new BasicHttpParams();
        httpconnectionParams.setSoTimeout(httpParameters,timeoutConnection);
        httpclient = new DefaultHttpClient(httpParameters);

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("text","some Text"));


        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));

        // Execute HTTP Post Request
        response = httpclient.execute(httppost);
        data = EntityUtils.toString(response.getEntity());

    }
    else
        isNetError=true;

    } catch (Exception e) {
        e.printstacktrace();
        isNetError=true;
        }

   if (responseCode == 200)
   {
        isNetError=false;
        System.out.println("final..." + data);
        }
        else
            isNetError=true;
    }

在asyntask的doInBackground()中调用方法,并在onPostExecute()中检查isNetError值,并在添加权限的其他答案中提及< uses-permission android:name =“android.permission.ACCESS_NETWORK_STATE”/>

if(isNetError)
//No internet 
else
//do your stuff

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...