Android - 以编程方式连接到wifi
我想以编程方式连接到WiFi网络。Android - 以编程方式连接到wifi
这里是我的代码:
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"" + ssid + "\"";
config.preSharedKey = "\""+ key +"\"";
int netId = wifiManager.addNetwork(config);
wifiManager.saveConfiguration();
wifiManager.disconnect();
wifiManager.enableNetwork(netId, true);
wifiManager.reconnect();
当我有我的手机支持WiFi,它工作正常,但问题是,当无线网络被禁用。在这种情况下,唯一的结果是启用WiFi适配器,但不能连接到网络。它似乎启用需要很长时间,所以它不会连接。另一个奇怪的事情是wifiManager.getConfiguredNetworks()
返回null。你知道如何解决这个问题吗?
谢谢
好像使需要长期所以它不会连接。
是的。这是因为网络的启用是异步完成的,它并行发生,并且不会立即发生。这里有两个可能的解决方案来解决你的问题:
1)这是最简单的解决方案,但不是最好的。循环,如其他用户所描述的那样检查扫描结果是否进入。但是,您应该在循环的每个循环之间添加某种睡眠。 I.E.你想等待1ms,以免吃掉所有的CPU资源。我不知道如何在Android上做到这一点。这种方法还有另一个问题。如果你在GUI线程中,当你等待连接建立时,你将以这种方式阻止所有的GUI事件。
2)这是正确的解决方案。网络连接建立后,您可以注册广播事件。然后当它结束时你会得到一个事件。从这个事件中,你可以完成任何需要的操作。
对不起,赶紧回答。我不是Android专业人士,所以我不能解释如何从头顶上做这件事的细节,但我认为我会至少指出你在正确的方向。
他已经完成了他的问题@ user2108746? – gumuruh 2014-07-21 08:18:00
实际上,如果您连接WiFi不止一次,它将解决您的问题。
我看到的另一件事是,如果我的WiFi已启用,并且连接到特定的WiFi网络,那么它正在工作。
另外一件事,当我从移动网络切换到特定的WiFi网络,然后它给出了一个不稳定的连接..对于这个问题,我通过一个特定的WiFi网络连接WiFi,然后在3秒延迟后再次忘记网络我再次连接。然后它正常工作。
我使用此代码连接到WiFi。
而对于延迟和有WiFi网络我使用此代码... .......
{
wifi(SSID,PASS);
final Handler handler = new Handler();
handler.postDelayed(
new Runnable()
{
Override public void run() { forgot(); }
}, 3000);
final Handler handler1 = new Handler();
handler1.postDelayed(
new Runnable()
{
Override public void run() {wifi(SSID,PASS); }
}, 3000);
}
....... 和延迟和获得WiFi网络我使用此代码... .......{SSID,PASS}; {0} {0} {0} {0} final Handler handler = new Handler(); handler.postDelayed(新的Runnable(){ 覆盖 公共无效的run(){ 忘记();} } ,3000); Final Handler handler1 = new Handler(); handler1.postDelayed(new Runnable(){ 覆盖public void run(){wifi(SSID,PASS);}},3000);} – user7212280 2016-11-26 06:25:59
欢迎来到Stack Overflow!我编辑了你的问题。在此处发布代码时,请将其缩进4个空格,以便在'code markdown'中获取。 – 2016-11-26 07:58:56
我还发现,在可变的NetID为-1,所以加入网络失败,我不知道为什么。 – 2013-03-06 20:24:46
请看看这个http://stackoverflow.com/questions/4374862/how-to-programatically-create-and-read-wep-eap-wifi-configurations-in-android/4374934#4374934.I认为这可能做你的工作。 – 2013-12-23 08:09:37
嘿,...我也是@TomášČerný,...所以如何解决它? – gumuruh 2014-07-26 10:09:51