如何将Android设备连接到特定SSID的WiFi

3

我希望通过wifi连接硬件。我使用wifiManager进行连接,但在真实设备上,如果SSID和密码未保存,则无法通过编程方式连接到SSID并发送或接收任何数据。如果设备中记住了SSID和密码,那么我的代码就可以正常工作。

以下是我的连接SSID的代码:

private void connect2SSIDWifi() throws Exception{


        WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        WifiInfo wifiInfo = wifi.getConnectionInfo();


        try{     
        if(wifiInfo.getSSID().equals(publicClass.ssid)) return; 
         }catch(Exception ex){}
         try {
                Thread.sleep(500);
            } catch (InterruptedException e) {}


         WifiConfiguration wc = new WifiConfiguration();
         wc.SSID = "\""+publicClass.ssid+"\"";
         wc.preSharedKey  = "\""+publicClass.ps+"\"";
         wc.hiddenSSID = true;
         wc.status = WifiConfiguration.Status.ENABLED; 

         wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
         wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
          wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
          wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
          wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
          wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);

          int netid = wifi.addNetwork(wc);
          wifi.enableNetwork(netid, true);
          wifi.reconnect();


    }

如果wifi连接正常,发送数据的代码可以正常工作。

                    Socket socket = new Socket();
                    socket.connect(new InetSocketAddress(publicClass.ip, publicClass.port), 300);
                    PrintWriter out = new PrintWriter(new BufferedWriter(
                            new OutputStreamWriter(socket.getOutputStream())), true);
                    out.println(Packet);
                    Log.d("tag",Packet);
                    Toast.makeText(context, "sent", Toast.LENGTH_SHORT).show();
                    socket.close();
1个回答

0

你添加了正确的权限吗?

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接