用于检查互联网连接的Android服务?
问题描述:
我想创建一个Android服务,在断开连接和重新连接互联网时通知主要活动。我有以下功能来检查互联网连接:用于检查互联网连接的Android服务?
private boolean haveInternet(){
NetworkInfo info=(NetworkInfo)((ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if(info==null || !info.isConnected()){
return false;
}
if(info.isRoaming()){
//here is the roaming option you can change it if you want to disable internet while roaming, just return false
return true;
}
return true;
}
但我想知道,如何在服务中使用它。
答
服务是专为长背景运行任务。 您应该使用BroadcastReceiver
:
这是我用来监视网络状态到我的主要活动的样品的方法:
private void installListener() {
if (broadcastReceiver == null) {
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
NetworkInfo info = (NetworkInfo) extras
.getParcelable("networkInfo");
State state = info.getState();
Log.d("InternalBroadcastReceiver", info.toString() + " "
+ state.toString());
if (state == State.CONNECTED) {
onNetworkUp();
} else {
onNetworkDown();
}
}
};
final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(broadcastReceiver, intentFilter);
}
}
记得拨打unregisterReceiver时的onDestroy事件发生
希望这帮帮我。
谢谢。这是我正在寻找的。 – Adnan 2010-06-30 06:05:01
绝妙的答案!我喜欢你如何创建一个方法,并添加onNetworkUp和Down回调 – Bhargav 2016-07-18 06:09:54
即时通讯使用这个和伟大的作品,但我希望有一个类或听众。所以我可以在多个活动中使用它,但我想避免代码重复。什么才是正确的方法呢? – 2018-01-27 18:59:22