通过SSID,密码,和连接类型来连接WiFi,并保存配置

public class MainActivity extends Activity {


WifiManager mWifiManager;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Button button = (Button) findViewById(R.id.button);
final EditText edit_ssid = (EditText) findViewById(R.id.edit1);
final EditText edit_psw = (EditText) findViewById(R.id.edit2);
final EditText edit_type = (EditText) findViewById(R.id.edit3);
edit_ssid.setText("iDataOffice");
edit_psw.setText("IntegralTek");
edit_type.setText(""+3);


button.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
WifiConfiguration wificonfig = CreateWifiInfo(edit_ssid.getText().toString().trim(), 
edit_psw.getText().toString().trim(),
Integer.parseInt(edit_type.getText().toString()));
int id = mWifiManager.addNetwork(wificonfig);
mWifiManager.saveConfiguration();
mWifiManager.enableNetwork(id, true);
}
});
}


public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)     
{     
WifiConfiguration config = this.IsExsits(SSID);               
if(config != null) {      
mWifiManager.removeNetwork(config.networkId);      
}    
config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();     
config.allowedGroupCiphers.clear();     
config.allowedKeyManagement.clear();     
config.allowedPairwiseCiphers.clear();     
config.allowedProtocols.clear();     
config.SSID = "\"" + SSID + "\"";       




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;       
}    
return config;     
}


private WifiConfiguration IsExsits(String sSID) {
List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
if(null == existingConfigs || existingConfigs.equals("")){
return null;
}
for(WifiConfiguration existingConfig : existingConfigs){
if(existingConfig.SSID.toString().equals("\"" + sSID + "\"")){
return existingConfig;
}
}
return null;
}     


}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 应用中连接 WiFi 并设置保存密码自动连接也是非常简单的。你可以使用 Android 提供的 WifiManager 类来完成这个任务。以下是一个示例代码,可以连接到指定的 WiFi 并设置自动连接: ```java WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); String ssid = "你要连接WiFi 名称"; String password = "你要连接WiFi 密码"; WifiConfiguration conf = new WifiConfiguration(); conf.SSID = "\"" + ssid + "\""; conf.preSharedKey = "\"" + password + "\""; conf.status = WifiConfiguration.Status.ENABLED; conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); int netId = wifiManager.addNetwork(conf); wifiManager.saveConfiguration(); wifiManager.disconnect(); wifiManager.enableNetwork(netId, true); wifiManager.reconnect(); ``` 在这个示例代码中,我们首先获取了 WifiManager 对象,然后设置了要连接WiFi 的名称和密码。接下来,我们创建了一个 WifiConfiguration 对象,并设置了它的 SSID、密码密码类型。然后我们调用 WifiManager.addNetwork() 方法将这个网络添加到 WiFi 配置列表中,并将其保存到设备中。最后,我们调用 WifiManager.enableNetwork() 方法连接到这个网络,并调用 WifiManager.reconnect() 方法重新连接WiFi。 需要注意的是,在 Android 6.0 及以上版本中,如果你想在应用程序中连接WiFi,你需要在 AndroidManifest.xml 中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> ``` 同时,你需要在运行时请求 ACCESS_FINE_LOCATION 权限,因为在 Android 6.0 及以上版本中,连接WiFi 的过程中需要获取设备的位置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值