静态注册广播检查网络状态

2015-11-18 17:24 阅读 3,804 次 评论 3 条
版权声明:本文著作权归TeachCourse所有,未经许可禁止转载,谢谢支持!
转载请注明出处:http://teachcourse.cn/820.html

为了区分广播注册的两种方式,特地写了一个静态广播的例子,监听应用程序网络状态,当前无网络的时候,在应用程序窗口提示信息“当前网络不可用,请检查网络是否已经连接..”,否则不提示,运行效果图:
静态广播检查网络状态

开发步骤:

一、编写NetStateUtil类,检查网络状态

二、编写广播接收器ConnectionChangeReceiver

三、在AndroidManifest.xml注册广播

四、编写MainActivity,在onResume方法中发送广播

五、效果演示

1、编写NetStateUtil类,检查网络状态

在NetStateUtil类中,写一个static的方法isNetworkAvailable,方法检查当前手机网络状态,无网络状态返回false,否则返回true,代码如下:
[java]
public class NestStateUtil {

/**
* 检测当前网络是否连接可用
*
*
* @return true|false
*/
public static boolean isNetworkAvailable(Context context) {

ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
}

[/java]

2、编写广播接收器ConnectionChangeReceiver

ConnectionChangeReceiver类基础BroadcastReceiver,并重写onReceive方法,并在方法中监听当前应用网络情况,无网络提示状态信息,代码如下:
[java]
public class ConnectionChangeReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent arg1) {
if(!NestStateUtil .isNetworkAvailable(context)){
Toast.makeText(context, "当前网络不可用,请检查网络是否已经连接..", Toast.LENGTH_LONG).show();
}

}

}
[/java]

3、在AndroidManifest.xml注册广播

静态注册和动态注册的区别,可以移步到《Android广播注册两者方式》查看,在AndroidManifest.xml注册代码如下:
[code]
<receiver
android:name="cn.teachcourse.receiver.ConnectionChangeReceiver"
android:exported="false" >
<intent-filter>
<action android:name="cn.teachcourse.receiver.connectionChangeReceiver" />
</intent-filter>
</receiver>
[/code]

4、编写MainActivity,在onResume方法中发送广播

在MainActivity中的OnResume方法中发送广播信息,布局界面根据自己情况,稍微写一个简单的就可以,发送广播代码如下:
[java]
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Intent intentNet = new Intent();
String netAction="cn.teachcourse.receiver.connectionChangeReceiver";
intentNet.setAction(netAction);
sendBroadcast(intentNet);
}
[/java]

5、添加权限

在访问网络状态的时候需要添加访问权限,连接网络需要添加,将下面代码复制到AndroidManifest.xml中即可,如下:
[code]
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
[/code]

6、效果演示

代码编写完成后,测试效果图:
静态广播检查网络状态

关注公众号 扫一扫二维码,加我QQ

如果文章对你有帮助,欢迎点击上方按钮关注作者

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ1589359239或公众号TeachCourse)
转载请注明出处:http://teachcourse.cn/820.html

资源分享

Demo源码
Android开发之gravity和layout_gravity之间的区别-案例演示 Android开发之gravity和layout_
初学Android Studio项目结构第一课 初学Android Studio项目结构第
关于WordPress后台设置中的WordPress地址和站点地址的解读 关于WordPress后台设置中的Wo
浅谈final关键字 浅谈final关键字

发表评论

呲牙 憨笑 坏笑 偷笑 色 微笑 抓狂 睡觉 酷 流汗 鼓掌 大哭 可怜 疑问 晕 惊讶 得意 尴尬 发怒 奋斗 衰 骷髅 啤酒 吃饭 礼物 强 弱 握手 OK NO 勾引 拳头 差劲 爱你

表情

  1. TeachCourse博主
    TeachCourse博主 【县长】【站长】 @回复

    请问你的站点做什么的?这个可以的

  2. boke112导航
    boke112导航 【队长】 @回复

    [强] 完全看不懂,只能路过

    • TeachCourse博主
      TeachCourse博主 【县长】【站长】 @回复

      博主分享的一些东西,有时候我也看不到!学习了