android系统的wifi状态我们是可以通过WifiManager类获取到的,总共有五种状态:
WifiManager.WIFI_STATE_DISABLING 正在停止
WifiManager.WIFI_STATE_DISABLED 已停止
WifiManager.WIFI_STATE_ENABLING 正在打开
WifiManager.WIFI_STATE_ENABLED 已开启
WifiManager.WIFI_STATE_UNKNOWN 未知
但有些设备上获取这些状态信息未必很准确,这我想跟很多因素有关。这里贴一个简单的wifi状态广播,以消息的方式提斯wifi的两种状态。
code:
public class WifiStatusBroadcast extends BroadcastReceiver {
private static final String TAG = "WifiStatusBroadcast";
private static String Opened = null;
private static String Closed = null;
public static boolean wifi_enabled = false;
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive:"+intent.getAction());
Log.d(TAG, "In ACTION_BOOT_COMPLETED");
Opened = context.getResources().getString(R.string.wifi_opened);
Log.d(TAG,"Wifistatus"+Opened);
Closed = context.getResources().getString(R.string.wifi_closed);
Log.d(TAG,"Wifistatus"+Closed);
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetInfo = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
Log.d(TAG,"activeNetInfo is "+activeNetInfo);
if(activeNetInfo != null && activeNetInfo.isConnected())
{
if(wifi_enabled == false)
{
Toast.makeText(context,Opened,2000).show();
wifi_enabled = true;
}
Log.d(TAG,"wifi was connected");
}else{
if(wifi_enabled == true)
{
Toast.makeText(context,Closed,5000).show();
wifi_enabled = false;
}
Log.d(TAG,"wifi was disconnected");
}
}
}
可以写成一个系统apk,也可写到framework下编译后即可。当wifi状态改变时即通会发出广播,这个类就可以接收到并做一些处理。