2016/11/26
Android で Wi-Fi Access Point を登録する
この記事は Android の Wi-Fi 実装に関する情報のまとめ の一部として書かれました
Wi-Fi Access Point を登録する方法です。
コード
以下のように WifiConfiguration
を作成し、 WifiManager.addNetwork()
で Access Point を登録することが出来ます。
ただし、登録するだけであり、接続は行いません。
返り値の networkId
は 入力の WifiConfiguration
に矛盾がある場合は -1
が返ってきて失敗を示しますが、それ以外は成功します。
つまり、SSID の存在やパスワードのチェックなどは行われません1。
また、端末再起動後も設定を維持するためには WifiManager.saveConfiguration()
を実行する必要があります。
2015/3/29 追記
`WifiManager.saveConfiguration()` は Android 8.0 (API 26 Oreo) で Deprecated になりました。
以後は `WifiManager.addNetwork()` を呼ぶと自動的に保存されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Activity 等の Context の中で WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); // 以下は WPA の例 WifiConfiguration config = new WifiConfiguration(); config.allowedKeyManagement.set(KeyMgmt.WPA_PSK); config.SSID = '"' + ssid + '"' ; config.preSharedKey = '"' + password + '"' ; int networkId = wm.addNetwork(config); // 以下を実行すると再起動後も設定が維持される(API 26 Oreo より前のみ必要) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { //noinspection deprecation wm.saveConfiguration(); } |
上記の例では WPA の場合に固定しましたが、その他 WifiConfiguration
の具体的な作成方法は以下を参照ください。
参考
パーミッション
WifiManager.addNetwork()
を実行するには android.permission.CHANGE_WIFI_STATE
パーミッションを AndroidManifest.xml で設定する必要があります。
1 | < uses-permission android:name = "android.permission.CHANGE_WIFI_STATE" > |
0 件のコメント:
コメントを投稿