2011-09-29 51 views
18

我有我找不到我的WiFi無線熱點的SSID在我的Android系統有問題。
我發現很多谷歌的信息,但沒有什麼幫助。
請幫我解決它。如何讓我的WiFi無線熱點的SSID在我目前的Android系統

+0

你嘗試過什麼到目前爲止,超過徒勞的谷歌搜索等?你有沒有看過[WifiManager API文檔](http://developer.android.com/reference/android/net/wifi/WifiManager.html)? –

+0

哦〜API始終獲取連接ssid,而不是我當前的系統ssid – solar

+3

歡迎來到SO!這不是一個論壇; __這是一個問題和答案網站,我怕你的帖子不是真正的問題,因爲[真正的問題有答案,而不是項目或想法或意見](http://blog.stackoverflow.com/2011/01 /real-questions-have-answers/).__ [請閱讀更多信息FAQ](http://www.stackoverflow.com/faq) – 2011-09-29 18:28:49

回答

53

您可以使用WifiManagerWifiInfo用於獲取無線上網的SSID

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
    WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
    Log.d("wifiInfo", wifiInfo.toString()); 
    Log.d("SSID",wifiInfo.getSSID()); 

此外,在您的清單文件添加權限。

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

哦〜這個方法我嘗試過,它只是可以得到我目前的連接SSID,但無法得到我的Android系統的WiFi熱點ssid – solar

+0

我認爲他應該指出,這可能只有當他打開他的WIfi第一。 – gumuruh

+0

在Android 8.1上不起作用。 '#dumpsys wifi | grep的mWifiInfo'給出'mWifiInfo SSID:<未知SSID>,BSSID:,MAC:...,請求者狀態:斷開,RSSI:-127,鏈接速度:-1Mbps,頻率:-1MHz,淨ID:-1,計量提示:假,得分:0' – Mygod

7

這裏:http://www.androidjavadoc.com/2.3/android/net/wifi/WifiManager.html是WifiManager的完整文檔。

注意一些方法只能通過檢查,因爲是你需要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 
    } 
} 

O,並且因爲這些東西被標記爲隱藏,它可以在任何未來版本的Android中更改或完全刪除。所以,除非你說得很清楚,否則不要太依賴「官方」應用程序。

+0

這是有道理的。我很好奇。我們怎麼能改變我們自己的設備名稱?通過當然我們知道的用戶界面設置,但通過代碼,你有線索@BartFriederichs? – gumuruh

+0

@gumuruh我一直在擺弄這個,而且可以通過設置配置。使用檢查來獲得正確的呼叫。請注意,API的這些部分可以隨時更改或刪除,並打破您的應用程序。使用風險自負。 –

+0

好吧,謝謝,現在我明白了。 :D – gumuruh

2
WifiConfiguration netConfig = new WifiConfiguration(); 


try{ 
    Method setWifiApMethod = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); 
    boolean apstatus=(Boolean) setWifiApMethod.invoke(wifiManager, netConfig,true); 
    Method isWifiApEnabledmethod = wifiManager.getClass().getMethod("isWifiApEnabled"); 

    while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)) 
    {} 

    Method getWifiApStateMethod = wifiManager.getClass().getMethod("getWifiApState"); 
    int apstate=(Integer)getWifiApStateMethod.invoke(wifiManager); 
    Method getWifiApConfigurationMethod = wifiManager.getClass().getMethod("getWifiApConfiguration"); 
    netConfig=(WifiConfiguration)getWifiApConfigurationMethod.invoke(wifiManager); 
    Log.e("CLIENT", "\nSSID:"+netConfig.SSID+"\nPassword:"+netConfig.preSharedKey+"\n"); 
} catch (Exception e) { 
    Log.e(this.getClass().toString(), "", e); 
} 

此代碼對我的作品

相關問題