Android检测网络状况

功能:当网络不可用时Toast提示。

使用步骤:
1、注册权限

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

2、编写NetworkStatusReceiver 类继承 BroadcastReceiver 复写 onReceive方法

package receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;

/**
 * 检测网络状况广播接收者
 * @author chenql
 */
public class NetworkStatusReceiver extends BroadcastReceiver {

    private ConnectivityManager connectivityManager;
    private NetworkInfo networkInfo;

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

        connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        networkInfo = connectivityManager.getActiveNetworkInfo();

        if (networkInfo == null || !(networkInfo.isAvailable())) {
            // 网络不可用时提示
            Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show();
        }
    }
}

3、在基类的 onCreate()方法中注册(这样所有继承基类的activity都会监听,也可以根据实际需要,包装到基类的一个方法中,由子类决定是否调用以监听网络状况。)

IntentFilter intentFilter = new IntentFilter();
// 添加监听网络状况的action
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); 
NetworkStatusReceiver networkStatusReceiver = new NetworkStatusReceiver();
registerReceiver(networkStatusReceiver, intentFilter);

4、在基类的onDestroy()方法中取消注册(如果依照上述操作在子类中调用注册广播的方法,则在基类的onDestroy()方法中取消注册前还应当判断对应的广播接收者networkStatusReceiver是否为空。)

    @Override
    protected void onDestroy() {
        super.onDestroy();

        if (networkStatusReceiver != null) {
            unregisterReceiver(networkStatusReceiver);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值