2016/10/19

Android で Wi-Fi 機能を有効・無効にする

この記事は Android の Wi-Fi 実装に関する情報のまとめ の一部として書かれました

Wi-Fi 機能の有効・無効を切り替えるには、WifiManager.setWifiEnabled() を実行します。

コード

1
2
3
4
5
6
7
8
// Activity 等の Context 内で
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
 
// 有効にする
wm.setWifiEnabled(true);
 
// 無効にする
wm.setWifiEnabled(false);

パーミッション

このコードを実行するには android.permission.CHANGE_WIFI_STATE パーミッションを AndroidManifest.xml で設定する必要があります。

1
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">

現実的な実装

実際は、以下のように Wi-Fi の状態を確認してから使用することが多くなると思います1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Click する度に On/OFF を切り替える
@Override
public void onClick(View v) {
    WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
 
    if (wm.isWifiEnabled()) {
        // Wi-Fi が有効な場合は無効にする
        wm.setWifiEnabled(false);
    } else {
        // 有効にしている最中は意味がないので、状態を確認
        // ただし、WIFI_STATE_ENABLING 中に setWifiEnabled() を呼んでも問題はない
        if (wm.getWifiState() != WifiManager.WIFI_STATE_ENABLING) {
            wm.setWifiEnabled(true)
        }
    }
}
参考
[穀風: Android で Wi-Fi 機能が現在有効かどうか調べる](http://kokufu.blogspot.jp/2016/10/android-wi-fi_60.html)
  1. 以下のコードを実行する場合は、android.permission.ACCESS_WIFI_STATE パーミッションも設定する必要があります 
?

0 件のコメント: