Android开发 Wi-Fi 教程
封面图
•
2025-11-14
•
Android开发
245
0
0
0
当然可以!下面是一个关于 **Android 开发中使用 Wi-Fi 的基础教程**,涵盖如何在 Android 应用中扫描 Wi-Fi 网络、连接到 Wi-Fi、获取当前连接的 Wi-Fi 信息等。 --- ## 📱 Android 开发:Wi-Fi 基础教程 ### ✅ 目录 1. **Wi-Fi 权限声明** 2. **扫描 Wi-Fi 网络** 3. **连接到 Wi-Fi** 4. **获取当前连接的 Wi-Fi 信息** 5. **注意事项与限制** --- ## 1. Wi-Fi 权限声明 在 `AndroidManifest.xml` 中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ``` > 注意:从 Android 6.0(API 23)开始,部分权限需要运行时申请。但 Wi-Fi 相关权限通常不需要运行时权限(除非你使用的是某些特定 API)。 --- ## 2. 扫描 Wi-Fi 网络 在 Activity 或 Fragment 中使用 `WifiManager` 扫描 Wi-Fi 网络。 ```java import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); if (wifiManager != null) { wifiManager.startScan(); // 启动扫描 List<ScanResult> results = wifiManager.getScanResults(); for (ScanResult result : results) { System.out.println("SSID: " + result.SSID + ", BSSID: " + result.BSSID); } } } } ``` > ⚠️ 注意:`startScan()` 需要用户授权,或者设备处于后台扫描状态。对于 Android 10 及以上版本,可能需要额外处理。 --- ## 3. 连接到 Wi-Fi 连接到 Wi-Fi 需要创建一个 `WifiConfiguration` 并调用 `addNetwork()` 和 `enableNetwork()`。 ```java WifiConfiguration config = new WifiConfiguration(); config.SSID = "\"MyWiFi\""; // 必须加双引号 config.preSharedKey = "\"password123\""; // 如果是 WPA/WPA2 加密 WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); if (wifiManager != null) { int networkId = wifiManager.addNetwork(config); if (networkId != -1) { wifiManager.enableNetwork(networkId, true); wifiManager.saveConfiguration(); } else { System.out.println("Failed to add network"); } } ``` > 🔒 注意:如果 Wi-Fi 是 WEP 加密,使用 `config.wepKeys[0] = "password"`。 --- ## 4. 获取当前连接的 Wi-Fi 信息 ```java WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); if (wifiManager != null) { android.net.wifi.WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String ssid = wifiInfo.getSSID(); String bssid = wifiInfo.getBSSID(); String ip = android.text.format.Formatter.formatIpAddress(wifiInfo.getIpAddress()); System.out.println("Connected to: " + ssid); System.out.println("BSSID: " + bssid); System.out.println("IP Address: " + ip); } ``` --- ## 5. 注意事项与限制 | 项目 | 说明 | |------|------| | Android 10+ | 从 Android 10 开始,应用无法直接访问 Wi-Fi 信息(如 SSID),除非有系统权限或用户明确授权。 | | 安全性 | 不建议在代码中硬编码 Wi-Fi 密码,应通过安全方式存储或让用户输入。 | | 权限 | 某些操作需要 `CHANGE_WIFI_STATE` 和 `ACCESS_WIFI_STATE` 权限。 | | 系统限制 | 在某些设备上,Wi-Fi 功能可能被厂商限制或禁用。 | --- ## 🛠 可选进阶功能 - 使用 `WifiScanner` API(适用于 Android 10+) - 使用 `NFC` 或 `蓝牙` 作为 Wi-Fi 的替代连接方式 - 实现 Wi-Fi 保存/删除功能 - 添加 UI 显示扫描结果 --- ## 📘 推荐学习资源 - [官方文档 - Wi-Fi Manager](https://developer.android.com/reference/android/net/wifi/WifiManager) - [Android Wi-Fi Scanner Example](https://github.com/AndroidDeveloperLB/WiFiScannerExample) - [Android 10 Wi-Fi Restrictions](https://developer.android.com/guide/topics/connectivity/wifip2p) --- 如果你需要我提供完整的示例项目(比如使用 Kotlin 或 Jetpack Compose 实现 Wi-Fi 扫描和连接),也可以告诉我! 是否需要我帮你写一个完整的示例项目?😊
上一篇:
Android - Image Effects教程
下一篇:
Android - Widgets Tutorial
标题录入,一次不能超过6条
留言
评论