广播接受变化

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><receiver android:name="com.rockvr.utils.net.NetworkConnectChangedReceiver">     <intent-filter>         <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>         <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>         <action android:name="android.net.wifi.STATE_CHANGE"/>     </intent-filter> </receiver>
public class NetworkConnectChangedReceiver extends BroadcastReceiver {    private static final String TAG = "NetworkConnectChanged";    @Override    public void onReceive(Context context, Intent intent) {        Log.d(TAG, "onReceive() called with: context = [" + context + "], intent = [" + intent + "]");        // 这个监听wifi的打开与关闭与wifi的连接无关        if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {            int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);            Log.i(TAG, "onReceive: wifiState " + wifiState);            switch (wifiState) {                case WifiManager.WIFI_STATE_DISABLED:                    NetUtils.setEnableWifi(false);                    break;                case WifiManager.WIFI_STATE_DISABLING:                    break;                case WifiManager.WIFI_STATE_ENABLED:                    NetUtils.setEnableWifi(true);                    break;                case WifiManager.WIFI_STATE_UNKNOWN:                    break;                default:                    break;            }        }        // 这个监听wifi的连接状态,即是否连上了一个有效路由,当上面的广播状态是        // WIFI_STATE_DISABLED和WIFI_STATE_DISABLING时,根本不会接收到这个广播.        if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {            Parcelable parcelableExtra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);            if (parcelableExtra != null) {                NetworkInfo networkInfo = (NetworkInfo) parcelableExtra;                NetworkInfo.State state = networkInfo.getState();                NetUtils.setWifi(state == NetworkInfo.State.CONNECTED);            }        }        // 这个监听网络连接的设置,包括wifi和移动数据的打开和关闭        // 最好是用这个。最大的弊端是比较慢        // 如果只监听wifi,上面的比较合适        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {            ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);            NetworkInfo activeNetwork = manager.getActiveNetworkInfo();            if (activeNetwork != null) {                if (activeNetwork.isConnected()) {                    if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {                        NetUtils.setWifi(true);                    } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {                        NetUtils.setMobile(true);                    }                }            } else {                Log.i(TAG, "There is no network connection");            }        }    }}

主动请求网络状态

private static final int NETWORK_TYPE_NONE = 1;private static final int NETWORK_TYPE_MOBILE = NETWORK_TYPE_NONE << 1;private static final int NETWORK_TYPE_WIFI = NETWORK_TYPE_MOBILE << 1;public static boolean isNetValid(Context context) {    if (getNetworkType(context) == NETWORK_TYPE_NONE) {        return false;    }    return true;}public static boolean isMobileNet(Context context) {    if (getNetworkType(context) == NETWORK_TYPE_MOBILE) {        return true;    }    return false;}public static boolean isWifiNet(Context context) {    if (getNetworkType(context) == NETWORK_TYPE_WIFI) {        return true;    }    return false;}private static int getNetworkType(Context context) {    ConnectivityManager connMgr = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();    if (networkInfo != null) {        switch (networkInfo.getType()) {            case ConnectivityManager.TYPE_MOBILE:                return NETWORK_TYPE_MOBILE;            case ConnectivityManager.TYPE_WIFI:                return NETWORK_TYPE_WIFI;        }    }    return NETWORK_TYPE_NONE;}

获取WIFI的IP地址

 public static String getLocalIp(Context context) {  WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);    WifiInfo wifiInfo = wifiManager.getConnectionInfo();    int ipAddress = wifiInfo.getIpAddress();    if (ipAddress == 0) return "Not connect wifi";    return ((ipAddress & 0xff) + "." + (ipAddress >> 8 & 0xff) + "." + (ipAddress >> 16 & 0xff) + "." + (ipAddress >> 24 & 0xff));}

更多相关文章

  1. Android(安卓)GPS Location with Listener
  2. android开机自启广播无效果的曲线解决方案
  3. android 黑屏状态下,开屏代码
  4. android保存第一次安装状态并初始化数据
  5. Android(安卓)广播监听USB插拔
  6. Android监听组合键
  7. android 多个activity 共用一套广播BroadcastReceiver
  8. android的Drawable
  9. 【Android】广播大全(二)

随机推荐

  1. PHP将数据库查询内容转换为JSON格式且显
  2. Android(安卓)APP与媒体存储服务的交互
  3. android Eclipse开发问题汇总
  4. 【精华】Android应用程序框架分析
  5. 二十三、Android源代码是这样搞到的(图解
  6. android clipChildren与clipToPadding
  7. 国外的通过Binder类创建Bound Service例
  8. [转]Android(安卓)应用开发中国大学生挑
  9. Android(安卓)Q 不叫 Q,正式命名为 Androi
  10. android shape 使用小结