Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีเชื่อมต่อ Wi-Fi โดยโปรแกรมใน Android ด้วย Kotlin

บทนำ

ตัวอย่างนี้สาธิตการเปิด/ปิด Wi-Fi โดยโปรแกรมใน Android โดยใช้ WifiManager และ Switch widget ใน Kotlin

ข้อจำกัดสำคัญ: ตั้งแต่ Android 10 (API 29) ขึ้นไป แอปพลิเคชันของบุคคลที่สาม ไม่สามารถเปิด/ปิด Wi-Fi โดยตรงได้แล้ว ต้องใช้ WifiManager#setWifiEnabled เฉพาะ System Apps หรือแอปที่มี Signature Permission เท่านั้น แอปทั่วไปควรนำผู้ใช้ไปที่ Settings Panel แทน

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่

สร้างโปรเจกต์ใหม่ใน Android Studio

ขั้นตอนที่ 2: Layout (activity_main.xml)

เพิ่มโค้ดใน res/layout/activity_main.xml:

<?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:

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 disableWiFi() {
        wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
        wifiManager.isWifiEnabled = false
        Toast.makeText(this, "Wifi Disabled", Toast.LENGTH_SHORT).show()
    }

    private fun enableWiFi() {
        wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
        wifiManager.isWifiEnabled = true
        Toast.makeText(this, "Wifi Enabled", Toast.LENGTH_SHORT).show()
    }
}

ขั้นตอนที่ 4: AndroidManifest.xml

เพิ่ม Permission:

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

การทดสอบ

รันแอปบนอุปกรณ์ Android 9 (API 28) หรือต่ำกว่า สลับ Switch จะเปิด/ปิด Wi-Fi ได้

วิธีเชื่อมต่อ Wi-Fi โดยโปรแกรมใน Android ด้วย Kotlin วิธีเชื่อมต่อ Wi-Fi โดยโปรแกรมใน Android ด้วย Kotlin

แนวทางปัจจุบัน (Android 10+): ใช้ startActivity(Intent(Settings.Panel.ACTION_WIFI)) เพื่อเปิดแผงตั้งค่า Wi-Fi ให้ผู้ใช้เลือกเอง