2013年12月29日 星期日

android WifiManager 的 SSID 双引號疑問?

在android上建立熱點與連上熱點的方法在 google 上查一下就很多了。
這裡提個觀察到的現象,所以只列出重點程式碼。

建熱點時,若名稱為 mynet
WifiConfiguration config = new WifiConfiguration();
config.SSID = "mynet";//注意字串裡沒加双引號

連上熱點如下:
WifiManager wifiManager;
wifiManager.setWifiEnabled(true);
WifiConfiguration wifiConfig;
wifiConfig.SSID = "\"" + "mynet" + "\"";  //注意這邊有加上双引號
int netID = wifiManager.addNetwork(wifiConfig);
wifiManager.enableNetwork(netID, true);

我用2台android設備對連
nexus 7 當客戶端, inhon g1 當熱點

2台設備連線完成,客戶端那一台印出熱點的SSID
Log.e("SSID name: ", wifiManager.getConnectionInfo().getSSID());
nexus 7 印出了 "mynet" ,感覺很正常,因為剛才有加双引號。
接著交換,換 nexus 7 當熱點,inhon g1 當客戶端,
結果印出了 mynet

双引號去那裡了?


2 則留言:

  1. 是不是因为这个原因, OS 4.2以前 android 返回的字符串 直接返回了。而4.2后 api说了,如果能被UTF8 decode,会自动加上双引号的。

    回覆刪除
    回覆
    1. 唔,既然有人解答了,我就看看google developers上面是怎麼講的,結果確實如lei tang所說的,只可惜看說明會以為只要是UTF8都會有双引號。順便找到了2個討論的連結,也可以參考一下
      https://code.google.com/p/android/issues/detail?id=40144
      http://stackoverflow.com/questions/13563032/jelly-bean-issue-wifimanager-getconnectioninfo-getssid-extra
      也有人覺得是4.2之前的bug吧...
      雖然沒什麼,但碰到了會以為自己那裡又寫錯了...

      刪除