Android 设置默认Wifi接口

项目需要设置默认wifi接口,研究了一下代码,就把wifi接口实现了一下,首先还是要新建自己的serive,流程之前文章有,现在就将方法定义到以下的两个文件中,

frameworks/base/core/java/android/app/customized/ICustomizedService.aidl,frameworks/base/core/java/android/app/customized/CustomizedService.java

代码如下:首先在frameworks/base/core/java/android/app/customized/ICustomizedService.aidl中声明一下

 boolean setDefaultWifi(String ssid,String password,int type);

然后在frameworks/base/core/java/android/app/customized/CustomizedService.java中定义一下


    public boolean setDefaultWifi(String ssid,String password,int type){
        IMiaMdmPolicyService service = getService();
        try{
            return service.setDefaultWifi(ssid, password, type);
        }catch (RemoteException e) {
	    return false;
        }
    }

然后在frameworks/base/services/core/java/com/android/server/customized/CustomizedService.java中实现方法


    public boolean setDefaultWifi(String ssid,String password,int type){
        long jh = Binder.clearCallingIdentity();
        WifiConfiguration ap=new WifiConfiguration();
        ap=CreateWifiInfo(ssid,password,type);
        WifiManager wifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
        int id=wifiManager.addNetwork(ap);
        boolean re=wifiManager.enableNetwork(id,true);
        Binder.restoreCallingIdentity(jh);
        return re;
    }

    private WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type) {  
    	WifiConfiguration config = new WifiConfiguration();    
        config.allowedAuthAlgorithms.clear();  
        config.allowedGroupCiphers.clear();  
        config.allowedKeyManagement.clear();  
        config.allowedPairwiseCiphers.clear();  
        config.allowedProtocols.clear();  
        config.SSID = "\"" + SSID + "\"";    
           
        /* WifiConfiguration tempConfig = this.IsExsits(SSID);            
           if(tempConfig != null) {   
              mWifiManager.removeNetwork(tempConfig.networkId);   
        } */
         
        if(Type == 1) //WIFICIPHER_NOPASS 
        {  
            config.wepKeys[0] = "";  
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
            config.wepTxKeyIndex = 0;  
        }  
        if(Type == 2) //WIFICIPHER_WEP 
        {  
            config.hiddenSSID = true; 
            config.wepKeys[0]= "\""+Password+"\"";  
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);  
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);  
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
            config.wepTxKeyIndex = 0;  
        }  
        if(Type == 3) //WIFICIPHER_WPA 
        {  
            config.preSharedKey = "\""+Password+"\"";  
            config.hiddenSSID = true;    
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);    
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);                          
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);                     
            //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);   
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
            config.status = WifiConfiguration.Status.ENABLED;    
        }
        if(Type == 4) //WIFICIPHER_EAP 
        {  
            config.preSharedKey = "\""+Password+"\"";  
            config.hiddenSSID = true;    
            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);    
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);                          
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);                     
            //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);   
            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
            config.status = WifiConfiguration.Status.ENABLED;    
        } 
        return config;  
    }

最后不要忘记将需要的包导入就可以了~

猜你喜欢

转载自blog.csdn.net/lancelots/article/details/82346108