如何在当前的Android系统中获取我的WiFi热点SSID

19

我有一个问题,就是在我的安卓系统中找不到我的Wifi热点的SSID名称。
我在谷歌上找到了很多信息,但没有什么有用的。
请帮我解决这个问题。


除了毫无结果的谷歌搜索,你尝试过什么?你有查看过 WifiManager API 文档 吗? - Justin ᚅᚔᚈᚄᚒᚔ
哦~API总是获取连接的SSID,而不是我的当前系统SSID。 - solar
3
欢迎来到SO!这不是一个论坛;这是一个问答网站,很抱歉您的帖子实际上并不是一个问题,因为真正的问题有答案,而不是条款、想法或意见请阅读常见问题解答获取更多信息。 - user195488
“system ssid” 是什么意思? - VinceFR
他是对的。那么你解决了吗?:D - gumuruh
3个回答

52
您可以使用 WifiManagerWifiInfo 来获取WiFi的SSID。
   WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
   WifiInfo wifiInfo = wifiManager.getConnectionInfo();
   Log.d("wifiInfo", wifiInfo.toString());
   Log.d("SSID",wifiInfo.getSSID());

还需在您的清单文件中添加权限(Permission)。

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

3
哦,我之前试过这种方法,它只能获取我当前连接的SSID,但无法在我的安卓系统中获取我的WiFi热点的SSID。 - solar
我认为他应该注意到这只有在他先打开WiFi的情况下才能正常工作。 - gumuruh
4
在安卓8.1上无法工作。 # dumpsys wifi | grep mWifiInfo 显示 mWifiInfo SSID: <unknown ssid>, BSSID: <none>, MAC: ..., Supplicant state: DISCONNECTED, RSSI: -127, Link speed: -1Mbps, Frequency: -1MHz, Net ID: -1, Metered hint: false, score: 0 - Mygod
对我来说也一样,在Android 7.1.1上无法工作,它返回一个NetworkInfo但SSID为<unknown>。 - Stéphane

9

这里是WifiManager的完整文档:http://www.androidjavadoc.com/2.3/android/net/wifi/WifiManager.html

请注意,一些方法只能通过检查获得,就像您需要的getWifiApConfiguration方法一样。

WifiManager wifimanager = (WifiManager) getSystemService(WIFI_SERVICE);
Method[] methods = wifimanager.getClass().getDeclaredMethods();
for (Method m: methods) {           
    if (m.getName().equals("getWifiApConfiguration")) {
        WifiConfiguration config = (WifiConfiguration)m.invoke(wifimanager);

            // here, the "config" variable holds the info, your SSID is in
            // config.SSID
    }
}

哦,由于这些内容被标记为隐藏,所以在任何未来版本的Android中都可能发生更改或完全删除。因此,在“官方”应用程序中不要太依赖它,除非您非常清楚地表明。


这是有意义的。但我想知道,我们如何通过代码更改自己设备的名称?当然,我们知道可以通过UI设置更改,但您有线索吗@BartFriederichs? - gumuruh
@gumuruh 我一直在尝试这个,可以通过设置配置来实现。使用检查来获取正确的调用。请注意,API的这些部分可能随时更改或删除,从而破坏您的应用程序。请自行承担风险。 - Bart Friederichs
该API现在受签名保护的权限保护。只有系统应用程序才能调用它。 - Mygod

0

我之前尝试过,但它只能扫描其他 WiFi 热点,不能扫描到我当前的 Android 系统 SSID。 - solar
文档说明该函数返回“当前”网络的SSID。 - Dan Nestor
我需要获取我在安卓系统中设置的wifi热点SSID,而不是网络中当前连接的SSID。 - solar
如果您的意思是获取已配置的网络列表,请尝试使用 WifiManager.getConfiguredNetworks() 方法。http://developer.android.com/reference/android/net/wifi/WifiManager.html#getConfiguredNetworks() - Dan Nestor
2
如果我理解正确的话,他需要找到一种方法来获取他的Android设备正在广播的网络的SSID,而不是他连接到的网络的SSID。 - MattC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接