Android 判断网络链接

一.Android判断网络链接:

/**
 * 判断网络是否链接 未链接弹出设置对话框 想访问网络状态,
 * 首先得添加权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 * NetworkInfo类包含了对wifi和mobile两种网络模式链接的详细描述,
 * 经过其getState()方法获取的State对象则表明着链接成功与否等状态
 */

public void CheckNetworkState() {
    boolean flag = false;
    // 主要管理和网络链接相关的操做
    ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    // 获取表明联网状态的NetworkInfo对象
    NetworkInfo netInfo = manager.getActiveNetworkInfo();
    boolean isAvailable = netInfo.isAvailable();
    if (isAvailable) {
        // 网络链接可用
    } else {
        // 网络链接不可用
    }

    // 获取GPRS链接状态
    State moblie = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
    if (moblie == State.CONNECTED || moblie == State.CONNECTING) {
        // GPRS网络已链接
        return;
    } else {
        // 跳转至网络链接设置界面
        startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
    }

    // 获取Wifi链接状态
    State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();

    if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
        // Wifi网络链接
        return;
    } else {
        // 跳转至wifi网络链接设置界面
        startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
    }
    //弹出提示对话框
    showAlterDialog();
}

private void showAlterDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("");
    builder.setPositiveButton("肯定", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface arg0, int arg1) {
            // 跳转至网络设置页面
            startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
        }
    });

    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface arg0, int arg1) {

        }
    });
}

二.网络变化是Broadcast:

    1.程序第一次启动时会收到一个Broadcastjava

    2.从 GPRS 到 WIFI,程序至少会收到3个Broadcast android

        第一个是链接到WIFI git

        第二个是断开GPRS 网络

        第三个是链接到WIFI ide

    3.从WIFI到GPRS,程序至少会收到2个Broadcast ui

        第一个是断开Wifi this

        第二个是链接到GPRS spa

 

三.使用ConnectivityManager监听网络状态变化,BroadcastReceiver方式:

private BroadcastReceiver mReceiver;
private ConnectivityManager mConnectivityManager;
private IntentFilter mIntenFilter;
mIntenFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
mReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
            Log.i(TAG, "netWork has lost");
        }

        NetworkInfo tmpInfo = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
        Log.i(TAG, tmpInfo.toString() + " {isConnected = " + tmpInfo.isConnected() + "}");
    }
};

注册Receiver,监听网络变化:.net

registerReceiver(mReceiver, mIntenFilter);

取消注册,再也不监听网络变化: code

unregisterReceiver(mReceiver);

也可在AndroidManifest.xml中注册BroadcastReceiver

<receiver android:name=".ConnectionReceiver" >  
    <intent-filter> 
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />     
    </intent-filter>  
</receiver>

 

4、代码片断:

NetWorkUtils.java

相关文章
相关标签/搜索