您的位置:首页 > 理论基础 > 计算机网络

android——利用广播监听网络状态

2017-01-07 10:10 363 查看
1.先说一下广播,广播分为两种:静态广播和动态广播。静态广播即是静态注册的,而动态广播是代码动态注册。静态注册是通过AndroidManifest注册,是常驻型 ,当应用程序关闭以后,如果还有广播发出,程序也会被系统调用自动运行动态注册广播不是常驻型广播,广播跟随activity的生命周期变化(一般在ondestory方法注销广播)

权限

<uses-permission android:name="android.permission.INTERNET" /><!-- 网络权限 --> `
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 读取网络状态 -->


3.广播代码如下:

public class NetStateReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = cm.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isAvailable()) {
//说明网络是连接的
int type = networkInfo.getType();
switch (type) {
case ConnectivityManager.TYPE_MOBILE:  //移动网络

break;
case ConnectivityManager.TYPE_WIFI:  //wifi

break;
}
} else {

CustomToast.showToast("网络不可用");
}
}
}


4.动态注册

动态注册需要在你需要接受广播的activity中注册,然后进行你想要的操作。

private void rigisterReceiver() {
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
mStateReceiver = new NetStateReceiver();
registerReceiver(mStateReceiver,filter);
}


在ondestory方法里面注销:

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


5.静态注册

静态注册广播 是一个全局的广播,你的app退出以后,有网络变化,也会发出广播。

在AndroidManifest中注册

<receiver android:name=".broadcast.NetStateReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android-广播