【问题标题】:Java in Android, Help on connecting to a wifi network, and trying to reconnect if unsuccessfulAndroid 中的 Java,帮助连接到 wifi 网络,如果不成功则尝试重新连接
【发布时间】:2012-12-20 03:52:14
【问题描述】:

我正在实现一种方法,如果无法成功连接到 wifi 网络,它会尝试使用警报对话框重新连接,这是我目前拥有的代码

public boolean autoConnect() {
      String networkSSID = "xxxxx";
      boolean connected = false;
      WifiConfiguration conf = new WifiConfiguration();

      conf.SSID = "\"" + networkSSID + "\"";
      conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
      WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
      wifiManager.addNetwork(conf);
      wifiManager.startScan();
      List<ScanResult> list = wifiManager.getScanResults();
      AlertDialog alertDialog = new AlertDialog.Builder(CarNannyv3Activity.this).create();
      alertDialog.setTitle("xxxxxxxx Not Available");  
      alertDialog.setMessage("Please make sure xxxxxx is turned on ");  
      alertDialog.setButton("Reconnect", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                autoConnect();
                dialog.dismiss();


            } });
      for( ScanResult i : list ) {
          if(i.SSID.equals("\"" + networkSSID + "\"")) {

               //wifiManager.enableNetwork(i.networkId, true);
               wifiManager.reconnect();               
               return connected = true;


          }else{

                alertDialog.show();
          }
       } 
      return connected;
  }

我得到了两件事之一,它要么无限循环重新连接对话框,要么根本不显示,请告诉我我做错了什么。

【问题讨论】:

  • 您的不稳定循环与 autoConnect(); 调用自身有关。每次用户选择重新连接时,您都在重新制定方法。然后如果新方法调用完成,你还有很多需要完成。一般来说,远离递归。

标签: java android networking network-programming wifi


【解决方案1】:

尝试使用它,它在我的情况下工作::

        WifiManager notif_manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        List<ScanResult> scan_list = notif_manager.getScanResults();
        for (ScanResult scan_ap : scan_list) 
        {
            if (scan_ap.SSID.equals("\"" + networkSSID + "\"")) 
            {

            /* Create a WifiConfig */
                WifiConfiguration eliteAp = new WifiConfiguration();

                /* AP Name */
                eliteAp.SSID = "\"" + ssidString + "\"";

                /* Priority */
                eliteAp.priority = 40;

                /* Enable Hidden SSID */
                eliteAp.hiddenSSID = false;
                .
                .
                .
                .
                .
                .       
                eliteAp.status = WifiConfiguration.Status.ENABLED;
                int res = wifi_manager.addNetwork(eliteAp);
                boolean d = wifi_manager.enableNetwork(res, true);
                break;

            }
        }

【讨论】:

  • 我使用上面的代码来创建 eap 配置,它真的很好用.....所以它可能也会帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
相关资源
最近更新 更多