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!