为了区分广播注册的两种方式,特地写了一个静态广播的例子,监听应用程序网络状态,当前无网络的时候,在应用程序窗口提示信息“当前网络不可用,请检查网络是否已经连接..”,否则不提示,运行效果图:
目录
开发步骤:
一、编写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、效果演示
你可能感兴趣的文章
转载请注明出处: https://www.teachcourse.cn/820.html ,谢谢支持!