广播接受变化

<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 的网络编程(8)-文件上传功能
  2. android保存第一次安装状态并初始化数据
  3. Android 技巧 - 网络可用性侦测
  4. android 黑屏状态下,开屏代码
  5. Android URL访问网络资源,通过URL加载网络图片
  6. android 检测是否有网络连接
  7. Android 4.4 上实现透明导航栏和状态栏 Translucent system bar
  8. Android获取定位经纬度,转换成地址
  9. android 网络状态判断

随机推荐

  1. Android截图的两种方法
  2. Skype for Business 2015 快速入门手册 v
  3. android下phonegap插件
  4. Android之Service案例-电话
  5. Android(Java):LayoutInflater
  6. Android之文件操作和JUnit
  7. android提供的Log类
  8. Android 通过wifi调试程序
  9. 开源一个友盟 for android 操作的封装包
  10. android SeekBar自定义样式滑动条的使用