Android筆記之網路狀態

來源:互聯網
上載者:User

標籤:

先上一個工具類的代碼:

package com.yonyou.util;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;/** * 判斷當前網路狀態 * @author xxx * */public class NetWorkUtil {static NetWorkUtil netWorkUtil;private NetWorkUtil(){}public static NetWorkUtil getNetWorkUtil(){if(netWorkUtil == null){netWorkUtil = new NetWorkUtil();}return netWorkUtil;}/** * 判斷網路狀態是否串連 * @param context * @return */public boolean isUseble(Context context){NetworkInfo info = getNetworkInfo(context);if(info != null){return info.isAvailable();}return false;}/** * 檢查是否是wify * @param context * @return */public static boolean isWifi(Context context) {NetworkInfo info = getNetworkInfo(context);if (info != null) {if (info.getType() == ConnectivityManager.TYPE_WIFI)return true;}return false;}/** * 檢查是否是移動網路 * @param context * @return */public static boolean isMobile(Context context) {NetworkInfo info = getNetworkInfo(context);if (info != null) {if (info.getType() == ConnectivityManager.TYPE_MOBILE)return true;}return false;}/** * 擷取網路資訊 * @param context * @return */private static NetworkInfo getNetworkInfo(Context context) {ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);return cm.getActiveNetworkInfo();}}
ConnectivityManager顧名思義,網路管理器,用於管理手機的wify及資料網路,其getActiveNetworkInfo()方法可以擷取一個NetWorkInfo對象,此NetWorkInfo對象封裝了當前手機的網路資訊,包括網路連接狀態,網路故障資訊等,在使用Http協議發送或請求資訊之前當先判斷當前網路狀態是否可用,也就是此NetWorkInfo對象的isAvailable是否為true,true網路可用,false不可用。但經常忽略一個問題,習慣性地對NetWorkInfo對象進行判空卻不清楚什麼時候為空白。今天做了一個測試(本人比較懶,引用了之前項目的一個介面):首先修改下工具類的一段代碼,
/**     * 判斷網路狀態是否串連     * @param context     * @return     */    public boolean isUseble(Context context){        NetworkInfo info = getNetworkInfo(context);        if(info != null){//            return info.isAvailable();            return true;        }        return false;    }

然後首頁面:

package com.yonyou.activity;import java.util.HashMap;import java.util.Map;import android.annotation.SuppressLint;import android.content.Context;import android.net.wifi.WifiManager;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.EditText;import android.widget.Toast;import com.yongyou.wei.R;import com.yonyou.abstractClass.NetCallBack;import com.yonyou.constantClass.CIMCUrl;import com.yonyou.util.NetUtil;import com.yonyou.util.NetWorkUtil;/** *  * @author xxx * */public class LoginActivity extends BaseActivity {    WifiManager mWifiManager;    EditText et_name;    EditText et_password;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.login);        init();    }    public void init(){        mWifiManager = (WifiManager) LoginActivity.this.getSystemService(Context.WIFI_SERVICE);        et_name = (EditText) findViewById(R.id.edt_name);        et_password = (EditText) findViewById(R.id.edt_password);    }    public void login(View view){        if(mWifiManager.getWifiState() == WifiManager.WIFI_STATE_DISABLED){            et_name.setText("wify關閉狀態");        }else if(mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED){            et_name.setText("wify開啟狀態");        }        boolean boo = NetWorkUtil.getNetWorkUtil().isUseble(LoginActivity.this);        if(boo){            et_password.setText("NetWorkInfo不為null");        }else{            et_password.setText("NetWorkInfo為null");        }    }}

效果如下:

這裡只將wify對NetWorkInfo是否為空白做了測試
移動資料效果是一樣的,有興趣可以查源碼。

Android筆記之網路狀態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.