简单的网络状态监听

第一步、自己写一个broadcast接收者

package com.bruce.netconnectionlistener;

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

/**
 * Created by Administrator on 2016/5/10 0010.
 */
public class ConnectionChangeReceiver extends BroadcastReceiver {
    private Context context;

    @Override
    public void onReceive(Context context, Intent intent) {
        this.context = context;
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
            showToast("网络不可以用");
            //改变背景或者 处理网络的全局变量
        } else {
            showToast("网络可以用");
            //改变背景或者 处理网络的全局变量
        }
    }

    /**
     * 解决思路:   不用计算Toast的时间之类的,就是定义一个全局的成员变量Toast, 这个Toast不为null的时候才去make,否则直接setText
     * .为了按返回键后立即使Toast不再显示,重写父类Activity的onBackPressed()方法里面去cancel你的Toast即可.
     *
     * @param text
     */
    Toast mToast;

    public void showToast(String text) {
        if (mToast == null) {
            mToast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
        } else {
            mToast.setText(text);
            mToast.setDuration(Toast.LENGTH_SHORT);
        }
        mToast.show();
    }

    public void cancelToast() {
        if (mToast != null) {
            mToast.cancel();
        }
    }
}

第二步、写一个baseactivity,作为基类,里面注册广播。

package com.bruce.netconnectionlistener;

import android.app.Activity;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.Bundle;

/**
 * Created by Administrator on 2016/5/10 0010.
 */
public class BaseActivity extends Activity {
    private ConnectionChangeReceiver myReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        registerReceiver();
    }

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

    private void registerReceiver() {
        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        myReceiver = new ConnectionChangeReceiver();
        this.registerReceiver(myReceiver, filter);
    }

    private void unregisterReceiver() {
        if (myReceiver != null) {
            this.unregisterReceiver(myReceiver);
        }
    }
}

3、在需要的类继承该baseactivity

package com.bruce.netconnectionlistener;

import android.os.Bundle;

public class MainActivity extends BaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

4、需要的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
时间: 2024-10-07 11:15:26

简单的网络状态监听的相关文章

网络状态监听

网络状态监听 定义一个广播接收器和状态变化接口 publicclassNetBroadcastReceiverextendsBroadcastReceiver{ publicstaticArrayList<NetEventHandler> mListeners =newArrayList<NetEventHandler>(); privatestaticString NET_CHANGE_ACTION ="android.net.conn.CONNECTIVITY_CHA

ThinkAndroid框架 网络状态监听原理

ThinkAndroid框架 网络状态监听原理,有需要的朋友可以参考下. 现在用到网络监听的地方越来越广泛,这里提供下ThinkAndroid里的实现方法,还是根据功能原理倒着给出代码: 1.网络状态会发出广播,监听网络状态肯定通过广播接收者实现,广播接受者: /** * @Title NetworkStateReceiver * @Package com.ta.util.netstate * @Description 是一个检测网络状态改变的,需要配置 <receiver * android:

关于网络状态监听实时,创建单例网络监测(非实时)

#pragma mark 网络状态监测 -(void)checkNetworkStatus{ //创建一个用于测试的url NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"]; AFHTTPRequestOperationManager *operationManager=[[AFHTTPRequestOperationManager alloc]initWithBaseURL:url]; //根据不同的网络状态改变去做相应

Python黑客编程基础3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

Python黑客编程3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: ?      操作系统:kali Linux 2.0 ?      编程工具:Wing IDE ?      Python版本:2.7.9 ?      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

Android USB大容量存储时SD卡状态监听(转)

对SD卡状态监听,到现在为止我知道的有两种方式: 1.注册StorageEventListener来监听sd卡状态 StorageEventListener中有onStorageStateChanged()方法,当sd卡状态改变时,此方法会调用,对各状态的判断一般会用到Environment类,此类中包含的有关sd卡状态的常量有: MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除 MEDIA_CHECKING:表明对象正在磁盘检查 MEDIA_MOUNTED:表明sd对象是

蓝牙那些事之状态监听

对于蓝牙状态的监听事件,此篇文章讲的是对于手机蓝牙的或者是设备自身蓝牙状态的监听,而并非是远程设备蓝牙状态的监听,当然如果要监听远程设备的蓝牙状态也不是没有办法,相对于监听自身蓝牙状态难度更大,资料页相对较少. 如果要监听本身蓝牙状态,还是要注册广播 1 //注册广播接收器(监听蓝牙状态的改变) 2 IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 3 4 filter.addAction(Bluetoot

Android 网络流量监听开源项目-ConnectionClass源码分析

很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分代码开源出来,今天就来带着大家分析一下脸书的这个开源代码. GitHub 地址https://github.com/facebook/network-connection-class 注意这个项目下载下来以后 会报很多错误,导致很多人运行不了,大家要根据各自电脑不同的情况修改gradle脚本,才能让

ListView异步加载 LruCache缓存 滑动状态监听

Android异步加载的总结.除了LruCache,我们还可以使用DiskLruCache这个第三方的类来实现"二级缓存".异步加载不仅仅是获取网络资源,我们可以加所有耗时的操作都看成异步加载,所有通过耗时的操作获取的结果我们都可以通过缓存来提高效率,比如我们可以利用这里的LruCache和DiskLruCache(这个缓存一般是用于缓存从网络获取的图片,视频等大的资源,这个时候我们一般和LruCache结合使用),使用Cache有个缺点,就是我们不能保证我们的数据是实时的,所以在re