您的位置:首页 > 理论基础 > 计算机网络

Android笔记之BroadCast判断网络状况

2013-11-16 17:32 337 查看
1、添加权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


2、判断网络是否可用:

private ConnectivityManager manager;

private BroadcastReceiver receiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// 通知用户网络连接变化
NetworkInfo networkinfo = manager.getActiveNetworkInfo();

if (networkinfo == null || !networkinfo.isAvailable()) {
Log.i("receive", "网络不可用");
}
Log.i("MainActivity", "receive");
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

manager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
}

// 注册广播
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
IntentFilter filter=new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, filter);
}

// 卸载广播
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if(receiver!=null){
unregisterReceiver(receiver);
}
}


3、更详细的网络信息

private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// 提醒用户网络状况有异常
// 分别获得2G和3G、wifi的网络状况
//提醒用户的两种方式:吐司、通知
NetworkInfo mobileInfo = manager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiInfo = manager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobileInfo.isConnected() || !wifiInfo.isConnected()) {
Notification.Builder builder = new Notification.Builder(MainActivity.this);
builder.setContentText("提示信息");
builder.setContentText("网络状况有异常");
builder.setSmallIcon(R.drawable.ic_launcher);
notificationManager.notify(1001,builder.build());
}
}
};


Done!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: