通过SSID,密码,和连接类型来连接WiFi,并保存配置
2017-04-17 16:37
766 查看
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;
}
}
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;
}
}
相关文章推荐
- 通过广播方式获取当前网络类型,如果是Wifi,获取对应的信息(附加有root之后可实现保存的无线网名称及密码获取)
- Android配置----小米手机通过wifi连接ADB调试Android应用
- Android通过修改配置文件设置wifi密码
- Android配置----小米手机通过wifi连接ADB调试Android应用
- C#使用Managed Wifi API连接带密码的SSID .
- 将电脑已连接过的wifi及密码保存到桌面脚本
- ArcCatalog禁用ArcSDE连接配置界面的保存密码勾选项
- Wifi连接有密码的SSID是wifiManager.addNetwork返回为-1
- Android6.0通过WiFi名称密码连接WiFi的方案
- C# 通过SSID连接指定的WIFI 【Managed Wifi API】
- 在电脑上查看小米手机连接wifi时保存的密码
- 重新配置EM的连接账号DBSNMP密码后保存设置时出错
- 详解Android通过修改配置文件设置wifi密码
- asp.net 2.0 的数据库的连接类(通过配置文件读连接串)
- Delphi 如何通过配置ini文件去连接SQL
- 在Vista配置SSAS通过HTTP远程连接的方法.
- 通过点连接来保存图片
- WinCE 5.0 WIFI 无线网卡的配置和建立连接
- 通过读取web.xml文件中的配置参数连接数据库(原)
- 配置Apache 2.2+PHP 5.2.9支持OCI通过Oracle9i Client连接Oracle