Android中动态注册广播监听网络变化
判断有没有联网
完整代码:
package com.zhh.android;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.Toast;
/**
* 本项目动态注册广播
* 监听网络变化
*
*
*/
public class MainActivity extends Activity {
/**
* 动态注册广播接收者在onCreate中注册
* 在onDestroy取消注册
*/
IntentFilter intentFilter=null;
NetworkChangeReceiver changeReceiver=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter =new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//要接收的广播
changeReceiver=new NetworkChangeReceiver();
registerReceiver(changeReceiver, intentFilter);//注册接收者
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(changeReceiver);//取消注册
}
/**
* 创建一个广播接收者的类
*
*
*/
class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//把这几句话直接拿出去,就可以检测网络
ConnectivityManager connectivityManager =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
/**
* networkInfo.isAvailable();
* 是否有网络连接
*/
if (networkInfo!=null&&networkInfo.isAvailable()) {
Toast.makeText(context, "网络连接正常", 10).show();
}else{
Toast.makeText(context, "网络连接失败", 10).show();
}
}
}
}//class
在主清单文件中开权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
如果没有明白,可以下载例子
http://download.csdn.net/detail/zhaihaohao1/8265193