项目需要设置默认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;
}
最后不要忘记将需要的包导入就可以了~