2012-10-10 24 views
1

我試圖運行一個新名稱並打開輔助功能的熱點。更改移動熱點的配置

wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); 
    wifiConfig.SSID = "\"MySSID\""; 
    wifiConfig.networkId = 1; 
    methodNum = getMethodNumber("setWifiApEnabled"); 
    try { 
     wmMethods[methodNum].invoke(wifiManager, wifiConfig, true); 
    } catch (IllegalArgumentException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (IllegalAccessException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (InvocationTargetException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    }   

我得到正確的方法,它好像它開始在手機, 的熱點,但配置並沒有改變。

我試圖用getWifiApConfiguration獲取當前的配置數據 我沒有得到它,沒有ssid,也沒有當前的加密。

我使用HTC Evo 3d進行調試。

+0

權限指定? – t0mm13b

+0

這些是我試過的權限: ACCESS_WIFI_STATE。 UPDATE_DEVICE_STATS, CHANGE_WIFI_STATE, UPDATE_DEVICE_STATS。 CHANGE_NETWORK_STATE。 WRITE_SETTINGS – user1624426

+0

@ user1624426您是否試圖用該配置連接到wifi,或者您想讓您的手機成爲tethering(熱點)設備? – gumuruh

回答

1

這似乎是它與HTC的問題。 我的一些朋友在HTC和其他設備上嘗試過類似的代碼。沒有在HTC工作,在其他工作。

4

一些HTC手機似乎使用類型HotspotProfile來保持其配置。因此,呼籲setWifiApEnabled之前,您需要設置SSID在HTC的方式:

if (isHtc) setHTCSSID(config); 
methodNum = getMethodNumber("setWifiApEnabled"); 
try { 
    wmMethods[methodNum].invoke(wifiManager, wifiConfig, true); 
    ... 

isHtc可以像計算:

try { isHtc = null!=WifiConfiguration.class. getDeclaredField("mWifiApProfile"); } 
catch (java.lang.NoSuchFieldException e) { isHtc = false } 

和setHTCSSID是:

public void setHTCSSID(WifiConfiguration config) { 
    try { 
     Field mWifiApProfileField = WifiConfiguration.class.getDeclaredField("mWifiApProfile"); 
     mWifiApProfileField.setAccessible(true); 
     Object hotSpotProfile = mWifiApProfileField.get(config); 
     mWifiApProfileField.setAccessible(false); 

     if(hotSpotProfile!=null){ 
      Field ssidField = hotSpotProfile.getClass().getDeclaredField("SSID"); 
      ssidField.setAccessible(true); 
      ssidField.set(hotSpotProfile, config.SSID); 
      ssidField.setAccessible(false); 

     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

我在一些中文博客中發現了這些信息:http://xiaxingwork.iteye.com/blog/1727722http://blog.sina.com.cn/s/blog_53dd443a010109i8.html

+0

嗨@luis我想在我的HTC手機創建熱點,我創建,但我不能連接到我的熱點它將配置IP地址,但永遠不會做我的完整問題在這裏http://stackoverflow.com/questions/29326985/set-ssid-for-hotspot-in-android-4-0可以幫我嗎? – max