You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin实现指定WiFi下加载APP及解决SSID获取异常问题

解决Android应用仅在特定WiFi下加载及SSID返回'unknown network'的问题

一、先配置必要权限

获取WiFi信息需要对应权限,在AndroidManifest.xml里添加:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Android 12及以上版本需额外添加 -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" />

注意:ACCESS_FINE_LOCATION是危险权限,需要动态申请;Android 10及以上,必须开启设备的位置服务才能获取到SSID,否则会返回unknown network。

二、Kotlin代码获取当前WiFi的SSID

下面是适配多版本的SSID获取方法,还会处理部分设备返回SSID带双引号的情况:

import android.content.Context
import android.net.wifi.WifiManager
import android.os.Build
import android.net.wifi.WifiInfo

fun getCurrentWifiSsid(context: Context): String? {
    val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
    val wifiInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        wifiManager.connectionInfo
    } else {
        wifiManager.connectionInfo
    }

    return wifiInfo?.ssid?.let { ssid ->
        // 移除SSID前后的双引号
        if (ssid.startsWith("\"") && ssid.endsWith("\"")) {
            ssid.substring(1, ssid.length - 1)
        } else {
            ssid
        }
    } ?: "unknown network"
}

三、实现特定WiFi下加载应用的逻辑

在应用启动时(比如启动页或主Activity的onCreate方法)检查当前WiFi:

// 替换成你的目标WiFi名称
const val TARGET_WIFI_SSID = "MyTargetWiFi"

fun checkWifiAndLoadApp(context: Context) {
    val currentSsid = getCurrentWifiSsid(context)
    when (currentSsid) {
        TARGET_WIFI_SSID -> {
            // 加载应用主内容,比如跳转到主界面
            navigateToMainScreen()
        }
        else -> {
            // 提示用户必须连接指定WiFi,比如弹出对话框
            showWifiRestrictionTip()
        }
    }
}

// 示例辅助方法
private fun navigateToMainScreen() {
    // 这里写跳转到主界面的逻辑
}

private fun showWifiRestrictionTip() {
    // 这里写显示提示的逻辑,比如AlertDialog
}

四、排查SSID返回'unknown network'的常见问题

  • 权限未授予:确认已经动态申请并获取了ACCESS_FINE_LOCATION权限。
  • 位置服务未开启:让用户打开设备的位置服务(即使你的应用不需要定位功能)。
  • 未连接WiFi:设备当前没有连接任何WiFi网络。
  • 隐藏SSID的WiFi:如果目标WiFi是隐藏的,系统无法获取到SSID,这种情况可以考虑通过BSSID(WiFi硬件地址)来验证。
  • Android版本适配:Android 12+要确保添加了NEARBY_WIFI_DEVICES权限。

内容的提问来源于stack exchange,提问作者patrick mwanza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:10:28