BroadcastReceiver代码:
public class ConnChangedReceiver extends BroadcastReceiver {
private ConnectivityManager connManager;
private NetworkInfo network;
private boolean isNetworkAvailable=false;//标识变量,表示当前网络是否连接
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)){
check(context);
}
}
private void check(Context ctx){
connManager=(ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
//判断是否有可用网络
network=connManager.getActiveNetworkInfo();
if(null!=network&&network.isAvailable()){
if(!isNetworkAvailable){
isNetworkAvailable=true;
System.out.println("有可用网络....");
}
}else{
if(isNetworkAvailable){
isNetworkAvailable=false;
System.out.println("无可用网络....");
}
}
}
}
Service代码:
public class NetworkStateService extends Service {
private ConnChangedReceiver connReceiver;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
connReceiver=new ConnChangedReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connReceiver, filter);//为Service注册广播
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(connReceiver);//注销Service的广播
}
}
MainActivity代码:
public class MainAt extends Activity implements OnClickListener{
private Button start,stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.at_main);
start=(Button) findViewById(R.id.start);
stop=(Button) findViewById(R.id.stop);
start.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId()==R.id.start){
startService(new Intent(MainAt.this,NetworkStateService.class));//开启Service
}else{
stopService(new Intent(MainAt.this,NetworkStateService.class));//停止Service
}
}
}
最后记得在AndroidManifest把Service配置上:
<service android:name="com.xxx.NetworkStateService"/>