概述
突然感觉该记录下一些东西了,就从最近做的连接WIFI技术开始吧,废话不多说直接上代码。
/**
* 获取周边wifi
*
* @return
*/
public List<ScanResult> getWifiList() {
List<ScanResult> scanWifiList = mWifiManager.getScanResults();
List<ScanResult> wifiList = new ArrayList<>();
if (scanWifiList != null && scanWifiList.size() > 0) {
HashMap<String, Integer> signalStrength = new HashMap<String, Integer>();
for (int i = 0; i < scanWifiList.size(); i++) {
ScanResult scanResult = scanWifiList.get(i);
if (!scanResult.SSID.isEmpty()) {
String key = scanResult.SSID + " " + scanResult.capabilities;
if (!signalStrength.containsKey(key)) {
signalStrength.put(key, i);
wifiList.add(scanResult);
}
}
}
}
return wifiList;
}
public 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;
}
return config;
}
/**
* 获取wifi加密方式
*/
public int getEncrypt(ScanResult scanResult) {
if (mWifiManager != null) {
String capabilities = scanResult.capabilities;
if (!TextUtils.isEmpty(capabilities)) {
if (capabilities.contains("WPA") || capabilities.contains("wpa")) {
return 3;
} else if (capabilities.contains("WEP") || capabilities.contains("wep")) {
return 2;
} else {
return 1;
}
}
}
return 0;
}
private WifiConfiguration IsExsits(String SSID) {
List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs) {
if (existingConfig.SSID.equals(""" + SSID + """)) {
return existingConfig;
}
}
return null;
}
// 添加一个网络并连接
public boolean addNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(wcg);
boolean connectSuc = mWifiManager.enableNetwork(wcgID, true);
return connectSuc;
}
需要注意的是6.0以上需要打开位置信息,所以要做下版本判断。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
//6.0下
} else {
//6.0上
activity.get().checkSelfPermission();
}
//
public void checkSelfPermission() {
if (ContextCompat.checkSelfPermission(Objects.requireNonNull(this), Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// 申请定位授权
ActivityCompat.requestPermissions(Objects.requireNonNull(this),
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 110);
} else {
iPemAppConfigPre.getWifiDataPermission();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 110:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
iPemAppConfigPre.getWifiDataPermission();
}
} else
Toast.makeText(this, "没有获取到定位权限", Toast.LENGTH_LONG).show();
break;
}
}
简单实现指定wifi的核心代码都在这里,有问题欢迎大家留言。刚开始写不足之处请大家谅解,愿大家一起进步。
最后
以上就是快乐篮球为你收集整理的连接指定WIFI(支持6.0)的全部内容,希望文章能够帮你解决连接指定WIFI(支持6.0)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复