如同qq等一些软件,当我们的网络发生变化,那么就会给出响应的提示,那么怎么做到这样的实时监控网络的功能呢?这其实使用到的是Android中4大组件中的广播接收者(BroadcastReceiver),其他的就不多废话了,下面用具体代码来实现

public static AlertDialog.Builder showDialog(final Context context,String title,String message,final String action){//创建AlertDialogAlertDialog.Builder builder=new Builder(context);//设置标题builder.setTitle(title);//设置信息builder.setMessage(message);//确定按钮builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {context.startActivity(new Intent(action));}});//取消按钮builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});return builder;}


这个方法没什么别的,只是一个弹出的对话框,只不过我用一个方法单独抽取出来,方便使用

public class MainActivity extends Activity {//声明网络管理类private ConnectivityManager manager;//声明网络信息private NetworkInfo info;private Handler handler=new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case 0x11:Dialog.showDialog(MainActivity.this, "提示", "是否需要开启网络?", android.provider.Settings.ACTION_WIRELESS_SETTINGS).create().show();break;case 0x12:Dialog.showDialog(MainActivity.this, "提示", "是否需要开启WIFI网络?", android.provider.Settings.ACTION_WIFI_SETTINGS).create().show();break;default:break;}};};//创建广播机制对象private BroadcastReceiver receiver=new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)){//获取网络管理对象manager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);//获取网络信息info=manager.getActiveNetworkInfo();if(null!=info&&info.isAvailable()){//判断是否是WIFI网络State state=manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();if(State.CONNECTED==state){Toast.makeText(context, "网络:"+info.getTypeName(), Toast.LENGTH_SHORT).show();}else{handler.sendEmptyMessage(0x12);return;}}else{handler.sendEmptyMessage(0x11);return;}}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//创建Intent过滤器IntentFilter filter=new IntentFilter();//添加网络活动filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);//注册该广播事件registerReceiver(receiver, filter);}@Overrideprotected void onDestroy() {super.onDestroy();//销毁该广播事件unregisterReceiver(receiver);}}

这样就可以实现网络实时监控了,不过有点问题,就是第一次进入的时候,给出提示是提示一次,如果在程序运行时,改变网络,那么就会连续提示几次,因为刚开始学Android,具体是什么原因,还弄不清楚,如果各位解决了这个问题,麻烦各位给在下一个提示,谢谢

更多相关文章

  1. 检查网络连接状况
  2. 网络连接和概述
  3. Android实现开机自启动某个程序
  4. android studio升级失败提示 Connection failed解决方法
  5. android网络请求框架Volley(二)
  6. android studio 混淆打包apk后volley无法访问网络
  7. Android(安卓)BroadcastReceiver 的生命周期及实际应用
  8. Android(安卓)FAQ
  9. andorid中网络图片下载、保存以及在相册中显示

随机推荐

  1. Android TV开发中所有的遥控器按键监听及
  2. Android系统服务Fuzz测试
  3. Android平台开发-Power management-电源
  4. 清单文件,测试,打电话和发短信应用
  5. Android 中文 API (101) —— AsyncTask
  6. 布局管理器
  7. android 判断sdcard是否存在,以及写入权限
  8. Android(安卓)2.0中电话本contact的读写
  9. Android倒计时功能的实现
  10. android程序编写的小问题