Programmatically connect to an android device in Portable hotspot

后端 未结 1 1954
面向向阳花
面向向阳花 2020-12-29 14:22

I have succesfully created a portable hotspot programmatically on my device with a specified SSID. Now I want to connect to it from another device! I\'m using this code:

相关标签:
1条回答
  • So guys I found the problem! The SSID was wrong because of the quotes "". So if you create an open portable hotspot with the following code (I took it somewhere on the net):

        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        if(wifiManager.isWifiEnabled())
        {
            wifiManager.setWifiEnabled(false);          
        }       
        Method[] wmMethods = wifiManager.getClass().getDeclaredMethods();   //Get all declared methods in WifiManager class     
        boolean methodFound=false;
        for(Method method: wmMethods){
            if(method.getName().equals("setWifiApEnabled")){
                methodFound=true;
                WifiConfiguration netConfig = new WifiConfiguration();
                netConfig.SSID = "\""+"TinyBox"+"\"";
                netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
    
                try {
                    boolean apstatus=(Boolean) method.invoke(wifiManager, netConfig,true);          
                    for (Method isWifiApEnabledmethod: wmMethods)
                    {
                        if(isWifiApEnabledmethod.getName().equals("isWifiApEnabled")){
                            while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){
                            };
                            for(Method method1: wmMethods){
                                if(method1.getName().equals("getWifiApState")){
                                    int apstate;
                                    apstate=(Integer)method1.invoke(wifiManager);
                                }
                            }
                        }
                    }
                    if(apstatus)
                    {
                        System.out.println("SUCCESSffffdd");  
    
                    }else
                    {
                        System.out.println("FAILED");   
    
                    }
    
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
            }      
        }
    

    You need to connect to it using:

        WifiConfiguration conf = new WifiConfiguration();
        conf.SSID = "\"\"" + "TinyBox" + "\"\"";
        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
        WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
        wifiManager.addNetwork(conf);
    
        List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
        for( WifiConfiguration i : list ) {
            if(i.SSID != null && i.SSID.equals("\"\"" + "TinyBox" + "\"\"")) {
                try {
                    wifiManager.disconnect();
                    wifiManager.enableNetwork(i.networkId, true);
                    System.out.print("i.networkId " + i.networkId + "\n");
                    wifiManager.reconnect();               
                    break;
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
    
            }           
        }
    
    0 讨论(0)
提交回复
热议问题