Kotlinを使ってプログラムからAndroidのWi-Fiネットワークに接続する方法
はじめに
この記事では、Kotlinを使ってAndroid端末のWi-Fiをプログラムから操作し、ネットワーク接続の有効化・無効化を行う方法を解説します。SwitchウィジェットをタップするだけでWi-FiのON/OFFを切り替えられる、シンプルなサンプルアプリを題材にしていきます。
開発の流れ
ステップ1:新しいプロジェクトを作成する
Android Studioを起動し、「File」→「New Project」から新規プロジェクトを作成します。必要な情報を入力してプロジェクトの雛形を生成してください。
ステップ2:レイアウトファイル(activity_main.xml)の作成
res/layout/activity_main.xml に以下のコードを記述します。
画面には上部にタイトル用のTextView、中央にWi-Fiの状態を表示するTextView、そして切り替え用のSwitchを配置しています。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="70dp" android:background="#008080" android:padding="5dp" android:text="TutorialsPoint" android:textColor="#fff" android:textSize="24sp" android:textStyle="bold" /> <Switch android:id="@+id/switchWifi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/switchWifi" android:layout_centerHorizontal="true" android:layout_marginBottom="30dp" android:text="WiFi OFF" android:textColor="@android:color/background_dark" android:textSize="24sp" android:textStyle="bold|italic" /> </RelativeLayout>
ステップ3:MainActivity.kt の実装
src/MainActivity.kt に以下のコードを記述します。
Switchのチェック状態が変わったタイミングで、Wi-Fiを有効化する enableWiFi() と無効化する disableWiFi() を呼び分けています。WIFI_SERVICE で WifiManager を取得し、isWifiEnabled プロパティを切り替えることでWi-Fiの状態を制御できます。
import android.content.Context
import android.net.wifi.WifiManager
import android.os.Bundle
import android.widget.Switch
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
@Suppress("DEPRECATION")
class MainActivity : AppCompatActivity() {
private lateinit var wifiButton: Switch
lateinit var textView: TextView
lateinit var wifiManager: WifiManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
textView = findViewById(R.id.textView)
wifiButton = findViewById(R.id.switchWifi)
wifiButton.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
textView.text = "WIFI ON"
enableWiFi()
} else {
textView.text = "WIFI OFF"
disableWiFi()
}
}
}
private fun enableWiFi() {
wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
wifiManager.isWifiEnabled = true
Toast.makeText(this, "Wifi Enabled", Toast.LENGTH_SHORT).show()
}
private fun disableWiFi() {
wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
wifiManager.isWifiEnabled = false
Toast.makeText(this, "Wifi Disabled", Toast.LENGTH_SHORT).show()
}
}
ステップ4:AndroidManifest.xml にパーミッションを追加
androidManifest.xml に以下のコードを追加します。Wi-Fiの状態を取得するための「ACCESS_WIFI_STATE」と、Wi-Fiの状態を変更するための「CHANGE_WIFI_STATE」の2つのパーミッション宣言が必要です。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.q11"> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
アプリの実行と動作確認
それでは、アプリを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続しているものとします。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーのRunアイコン
をクリックしてください。接続済みのモバイルデバイスを選択すると、実機の画面にアプリが起動します。


注意点:Android 10(API 29)以降での挙動
WifiManager の setWifiEnabled(isWifiEnabled への代入)は、Android 10(API 29)以降で非推奨となり、サードパーティ製アプリからの直接的なWi-FiのON/OFFはできなくなりました。Android 10以降を対象とする場合は、Settings.Panel.ACTION_WIFI インテントでWi-Fi設定パネルを表示し、ユーザー自身に切り替えてもらう方式が推奨されています。本記事のコードは、Android 9(API 28)以前の環境で動作させる場合に有効ですので、実際に利用する際は対象OSバージョンに合わせて実装方法を選択してください。
-
Androidで隠し(ステルス)Wi-Fiネットワークに接続する方法
通常の方法では、隠しWi-Fiネットワークには接続できません。隠しネットワークは端末の利用可能なネットワーク一覧に表示されないため、別の手順を踏む必要があります。では、どのように接続すればよいのでしょうか? この記事では、Androidで隠しWi-Fiネットワークに接続する方法を詳しく解説します。 隠しWi-Fiネットワークとは? 隠しネットワークとは、SSID(Wi-Fiの名前)をブロードキャストしないネットワークのことです。そのため、端末のWi-Fi設定画面で「利用可能なネットワーク」の一覧を開いても表示されず、自動的に検出されることもありません。 SSIDを非公開にしているということは、
-
【Android】WPSを使ってWi-Fiネットワークに接続する方法を徹底解説
無線ネットワークにもっと手軽に接続したいなら、AndroidのWPS機能の活用がおすすめです。ただし、Android 9以降のバージョンではこの機能が利用できない場合がある点に注意が必要です。本記事では、WPSプッシュボタンを使ってAndroid端末をWi-Fiに接続する具体的な方法を詳しく解説します。 AndroidでWPSを使ってWi-Fiネットワークに接続する方法 WPS(Wi-Fi Protected Setup)は、ルーターとデバイス間の接続をより速く、より簡単に行うための機能です。2006年にCisco社によって導入されました。これは、パスワードで暗号化された無線ネットワークに