2010年10月05日

[android] WiFiのON/OFFを取得するには

ワイヤレス設定のWiFi ON/OFFを取得する方法です
※WiFiの接続状態ではなくWiFi設定のON/OFFです

IntentFilterの設定
WiFiのON/OFFが変更された時にWIFI_STATE_CHANGED_ACTIONのインテントが投げられるので、IntentFilterで受け取ります

  
    
  


Permissionの設定
WIFI_STATE_CHANGED_ACTIONのインテントを受け取るにはACCESS_WIFI_STATEのパーミッションが必要です


Receiverの処理
WifiManagerのgetWifiState()でWiFiのON/OFF状態を取得できます
public class WifiOnOffReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {
      WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

      if (wm.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
        // WiFiがONになった時の処理
      } else if (wm.getWifiState() == WifiManager.WIFI_STATE_DISABLED) {
        // WiFiがOFFになった時の処理
      }
    }
  }
}

WifiState()の遷移
[WIFIをON ] → WIFI_STATE_ENABLING → WIFI_STATE_ENABLED
[WIFIをOFF] → WIFI_STATE_DISABLING → WIFI_STATE_DISABLED
[失 敗 時 ] → WIFI_STATE_UNKNOWN
posted by meloncake at 01:35| Comment(2) | TrackBack(0) | Android
この記事へのコメント
初めまして。
WifiManager.WIFI_STATE_CHANGED_ACTIONは
マニフェストに登録してもintentうけとれないようです。
ソースコード上でintentfilterにaddする必要が
あるのではないかとコメントさせていただきました。
失礼致します。
Posted by チョンボ at 2012年10月31日 00:46
私はうまくいきました。
記事の繰り返しですが
android.net.wifi.WIFI_STATE_CHANGED
をfilterし
android.permission.ACCESS_WIFI_STATE
を許可すれば問題なく。(android2.3)

大変参考になりました。
Posted by いやいや at 2013年01月07日 16:31
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/41109890

この記事へのトラックバック