WifiManager 实现Wifi快捷开关
wifi快捷快捷开关
wifi快捷快捷开关实现起开比Gprs开关简单,WifiManager有开放的API,想了解Gprs快捷开关的同学看这篇文章:http://blog.csdn.net/u013045971/article/details/41750977
获取wifi状态:
public static boolean isWifiEnable(Context context) { WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); return wifiManager.isWifiEnabled(); }
设置wifi状态:
public static void setWifiEnable(Context context, boolean enable) { WifiManager wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(enable); }
那么跟Gprs开关一样,我们也需要根据监听一个标识去改变视图的状态(比如别的程序改变了wifi,你自己的视图是不是也要跟着变化呢?),之前的Gprs是通过监听database来改变视图的状态,而wifi就不需要那么麻烦了,直接通过广播来监听状态。直接在接收器中改变你的视图状态就ok了。
如下:
class ChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { int e = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0); //这里的广播是接受到wifi的开和关状态 //WIFI_STATE_DISABLED 已关闭 //WIFI_STATE_DISABLING 正在关闭 //WIFI_STATE_ENABLED 已打开 //WIFI_STATE_ENABLING 正在打开 //WIFI_STATE_UNKNOWN 未知 switch (e) { case WifiManager.WIFI_STATE_DISABLED: Log.i("ABC", "_DISABLED"); break; case WifiManager.WIFI_STATE_DISABLING: Log.i("ABC", "_DISABLING"); break; case WifiManager.WIFI_STATE_ENABLED: Log.i("ABC", "_ENABLED"); break; case WifiManager.WIFI_STATE_ENABLING: Log.i("ABC", "_ENABLING"); break; case WifiManager.WIFI_STATE_UNKNOWN: Log.i("ABC", "_UNKNOWN"); break; default: break; } } if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { //这里的广播是表示wifi链接到一个正常的路由 链接到正常的路由之后才可以正常的获取wifi的 名称 ,IP,信号强度之类的参数 WifiManager manager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); Log.i("ABC", "_ok" + manager.getConnectionInfo().getSSID()); } } }