zoukankan      html  css  js  c++  java
  • android 通过广播监听网络连接状况

    首先添加以下权限

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    new一个广播NetStateChangeBroadcast

    package aviationboss.broadcast;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo.State;
    import android.util.Log;
    import android.widget.Toast;
    import aviationboss.data.SystemData;
    
    public class NetStateChangeBroadcast extends BroadcastReceiver {
        private ConnectivityManager connectivity;
        private boolean isConnect = false;
    
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            // TODO Auto-generated method stub
            connectivity = (ConnectivityManager) arg0
                    .getSystemService(arg0.CONNECTIVITY_SERVICE);
            State wifiState = connectivity.getNetworkInfo(
                    ConnectivityManager.TYPE_WIFI).getState();
            if (State.CONNECTED == wifiState) {
                isConnect = true;
            }
            
            if(connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)!=null){
                State mobileState = connectivity.getNetworkInfo(
                        ConnectivityManager.TYPE_MOBILE).getState();
                if (State.CONNECTED == mobileState) {
                    isConnect = true;
                }
            }
            
            Intent intent = new Intent();
            intent.setAction("netConnect");
    
            if (isConnect) {
                if (!SystemData.NetState) {
                    Toast.makeText(arg0, "网络已连接", Toast.LENGTH_SHORT).show();
                    SystemData.NetState = true;
                    intent.putExtra("netActions", "网络已连接");
                    arg0.sendBroadcast(intent);
                }
            } else {
                if (SystemData.NetState) {
                    Toast.makeText(arg0, "网络已断开", Toast.LENGTH_SHORT).show();
                    SystemData.NetState = false;
                    intent.putExtra("netActions", "网络已断开");
                    arg0.sendBroadcast(intent);
                }
            }
        }
    }

    判断wifi的连接状态

    connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState()

    判断移动网的连接状态

    connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState()

    在配置文件中添加该广播,并设置监听的动作

    <receiver android:name="aviationboss.broadcast.NetStateChangeBroadcast" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
  • 相关阅读:
    成功的软件开发过程 迭代,进化和敏捷
    将动态aspx页面转换成为静态html页面的几种方法
    大社区型网站的架构总结之如何标示用户在使用哪个功能程序篇(草稿)
    如果你觉得能做项目经理,就不要屈就自己去做普通程序员
    软件测试人的职业发展
    软件测试工程师,应该掌握的技能
    内存分配的字节对齐
    约瑟夫问题循环链表
    Linux字符设备驱动结构
    抵制日货(中国人一年购买日本货的钱,足够维持小鬼子2年半的军费)
  • 原文地址:https://www.cnblogs.com/dcxz/p/3716089.html
Copyright © 2011-2022 走看看