2015-10-08 26 views
1

我在運行KitKat的三星設備上遇到此問題。它似乎不影響我運行棒棒糖的Nexus設備。如何在不禁用以前的網絡的情況下在Android上切換Wi-Fi網絡?

我使用此代碼Wi-Fi網絡之間切換:

private void switchToNetwork(String ssid) { 
    WifiConfiguration configuration = new WifiConfiguration(); 
    configuration.SSID = String.format(Locale.US, "\"%s\"", ssid); 
    // ... other configuration changes such as password and cipher 
    manager.disconnect(); 
    manager.enableNetwork(params[0].configuration.networkId, true); 
    manager.reconnect(); 
} 

然而,我注意到,如果我運行此代碼前在過去連接到Wi-Fi網絡,這些三星設備的變化該先前網絡的狀態將「關閉」。發生這種情況是因爲我在調用enableNetwork的第二個參數disableOthers設置爲true。

「關閉」狀態表示如果其他網絡關閉,網絡將不會自動切換到。出於我的目的,我手動切換回網絡,但在某些情況下(例如應用程序崩潰),可能需要網絡自動切換。

Turned Off Not Disabled

當我改變disableOthers爲假,但是,它並不總是改變我的SSID我switchToNetwork要求()。它通常會停留在以前的SSID上。

所以:如何保證我切換到新網絡而不禁用以前的網絡?

回答

0

這樣做的一種方法是緩存當前的網絡ID。

您可以使用getConnectionInfo.getNetworkId API存儲當前連接的網絡ID並臨時存儲它。

現在連接到您想要的網絡,完成後使用以前存儲的ID連接回到以前的網絡。

+0

是否有任何方法來禁用當前活動的wifi網絡並連接到新的 –

+0

有一個{WifiManager#disableNetwork} API,它以網絡ID爲參數。有更多的API,看看https://developer.android.com/reference/android/net/wifi/WifiManager.html – vishalm

相關問題