Android設備判斷網絡連接狀態

jopen 9年前發布 | 2K 次閱讀 Java Android

所需權限(AndroidManifest.xml文件中添加):

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  

Java代碼(MainActivity.java文件)

    package com.example.androidtest;

import android.net.ConnectivityManager;  
import android.net.NetworkInfo;  
import android.net.NetworkInfo.State;  
import android.os.Bundle;  
import android.app.Activity;  
import android.content.Context;  
import android.util.Log;  
import android.view.Menu;  

public class MainActivity extends Activity {  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        boolean bFlag = isNetworkAvailable(this.getApplicationContext());  
        if (bFlag) {  
            Log.i("Network state - ", "connected");  
        } else {  
            Log.i("Network state - ", "disconnected");  
        }  

    }  

    /** 
     * 判斷網絡連接狀況 
     *  
     * @param ctx 
     * @return 
     */  
    public boolean isNetworkAvailable(Context ctx) {  
        boolean bFlag = false;  
        if (ctx != null) {  
            ConnectivityManager conMan = (ConnectivityManager) ctx  
                    .getSystemService(Context.CONNECTIVITY_SERVICE);  
            if (conMan != null) {  
                // wifi Network  
                NetworkInfo nInfoW = conMan  
                        .getNetworkInfo(ConnectivityManager.TYPE_WIFI);  
                if (nInfoW != null) {  
                    State wifi = nInfoW.getState();  
                    if (State.CONNECTED == wifi) {  
                        bFlag = true;  
                    }  
                }  
                if (!bFlag) {  
                    // mobile Network  
                    NetworkInfo nInfoM = conMan  
                            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);  
                    if (nInfoM != null) {  
                        State mobile = nInfoM.getState();  
                        if (State.CONNECTED == mobile) {  
                            bFlag = true;  
                        }  
                    }  
                }  
            }  
        }  
        return bFlag;  
    }  

    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.activity_main, menu);  
        return true;  
    }  

}  </pre> 


isNetworkAvailable方法里先做wifi連接狀態判斷,如果wifi未連接,再做2g/3g/4g...手機網連接狀態判斷。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!