Android 判断是否有网及无网处理

当我们开发时,为了提高用户的体验,常常要监测手机的网络状态,当手机处于无网状态时,我们会做一些相应的处理或者引导用户去打开网路,以下是我总结的一些经验,不足之处,还请谅解,如果有错误的地方,欢迎拍砖.(做了快两年的Android了,总觉得要做点什么,要不然感觉自己都在虚度了)奋斗


首先我们得自定义一个NetStateReceiver 继承extends  BroadcastReceiver

public class NetStateReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        boolean isNet = NetworkUtil.isConnected();
        if (isNet) {
            EventBus.getDefault().post(0, ConstantValue.Net_open);
        }else
            EventBus.getDefault().post(1, ConstantValue.Net_open);
    }
}
这里我用的是org.simple.eventbus.EventBus 框架来更新事件,如果大家不熟悉可以使用广播,或者其他自己熟悉的方式:0代表现在网络是打开的,1代表没打开

当然我们还得在配置文件里面单独注册:
   <!--监听网络变化广播-->
        <receiver android:name=".common.network.NetStateReceiver">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

当然这里还需注册网络操作权限:


  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

当监测到没网时,我们可能需要引导用户去打开网络:

/*
    * 打开设置网络界面
    * */
    public static void setNetworkMethod(final Context context){
        //提示对话框
        AlertDialog.Builder builder=new AlertDialog.Builder(context);
        builder.setTitle("网络设置提示").setMessage("网络连接不可用,是否进行设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() {


            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Intent intent=null;
                //判断手机系统的版本  即API大于10 就是3.0或以上版本
                if(android.os.Build.VERSION.SDK_INT>10){
                    intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
                }else{
                    intent=new Intent(android.provider.Se

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值