厂房装修东莞网站建设,绿蜻蜓建设管理有限公司网站,wordpress 所以文章,网站短期技能培训学校0#xff0c;目标 APP中实现扫WIFI分享码自动连接WIFI功能
1#xff0c;前提条件 设备需要有个扫码器#xff08;摄像头拍照识别也行#xff09;#xff0c;APP调用扫码器读取WIFI连接分享码。 2#xff0c;增加权限 在AndroidManifest.xml中增加权限 uses-permissi…0目标 APP中实现扫WIFI分享码自动连接WIFI功能
1前提条件 设备需要有个扫码器摄像头拍照识别也行APP调用扫码器读取WIFI连接分享码。 2增加权限 在AndroidManifest.xml中增加权限 uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE /uses-permission android:nameandroid.permission.CHANGE_WIFI_STATE /uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE /
3参数检查 扫码成功后对内容进行一个基本的判断确认扫码数据中有P和T的参数
//WIFI连接
if (strResult.contains(P:) strResult.contains(T:)) {// 自动连接wifiConnectWifi(strResult);
}
4WIFI连接调用 private void ConnectWifi(String strResult){//取连接参数String passwordTemp strResult.substring(strResult.indexOf(P:));password passwordTemp.substring(2,passwordTemp.indexOf(;));String netWorkTypeTemp strResult.substring(strResult.indexOf(T:));netWorkType netWorkTypeTemp.substring(2,netWorkTypeTemp.indexOf(;));String netWorkNameTemp strResult.substring(strResult.indexOf(S:));netWorkName netWorkNameTemp.substring(2,netWorkNameTemp.indexOf(;));WifiAdmin wifiAdmin new WifiAdmin(MainActivity.this);if (!wifiAdmin.mWifiManager.isWifiEnabled()) {Toast.makeText(this, 开启wifi设置, Toast.LENGTH_LONG).show();wifiAdmin.openWifi();}int net_type 0x13;if (netWorkType.compareToIgnoreCase(wpa) 0) {net_type WifiAdmin.TYPE_WPA;// wpa} else if (netWorkType.compareToIgnoreCase(wep) 0) {net_type WifiAdmin.TYPE_WEP;// wep} else {net_type WifiAdmin.TYPE_NO_PASSWD;// 无加密}boolean bConnect wifiAdmin.addNetwork(netWorkName,password,net_type);//连接if(bConnect){Toast.makeText(this, 网络连接成功, Toast.LENGTH_LONG).show();}else{Toast.makeText(this, 网络连接失败, Toast.LENGTH_LONG).show();}}
5WIFI连接类
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;import java.util.List;/*** Created by cmos.*/
public class WifiAdmin {private static String TAGWifiManger;public static final int TYPE_NO_PASSWD 0x11;public static final int TYPE_WEP 0x12;public static final int TYPE_WPA 0x13;public WifiManager mWifiManager;private WifiInfo mWifiInfo;public WifiAdmin(Context context){mWifiManager (WifiManager) context.getSystemService(Context.WIFI_SERVICE);// mWifiInfo mWifiManager.getConnectionInfo();}// 添加一个网络并连接public boolean addNetwork(WifiConfiguration wifi){int netIdmWifiManager.addNetwork(wifi);return mWifiManager.enableNetwork(netId,true);}public boolean addNetwork(String ssid, String passwd, int type) {if (ssid null || passwd null || ssid.equals()) {Log.e(TAG, addNetwork() ## nullpointer error!);return false ;}if (type ! TYPE_NO_PASSWD type ! TYPE_WEP type ! TYPE_WPA) {Log.e(TAG, addNetwork() ## unknown type type);}return addNetwork(createWifiInfo(ssid, passwd, type));}public WifiConfiguration createWifiInfo(String SSID, String password, int type) {Log.e(TAG, SSID SSID ## Password password ## Type 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) {//如果已存在该SSID的wifimWifiManager.removeNetwork(tempConfig.networkId);}// 分为三种情况1没有密码2用wep加密3用wpa加密if (type TYPE_NO_PASSWD) {// 没有密码config.wepKeys[0] ;config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);config.wepTxKeyIndex 0;} else if (type TYPE_WEP) { // 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;} else if (type TYPE_WPA) { // 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;}//检测该SSID是否已存在private WifiConfiguration IsExsits(String SSID) {ListWifiConfiguration existingConfigs mWifiManager.getConfiguredNetworks();for (WifiConfiguration existingConfig : existingConfigs) {if (existingConfig.SSID.equals(\ SSID \)) {return existingConfig;}}return null;}// 打开WIFIpublic void openWifi() {if (!mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(true);}}// 关闭WIFIpublic void closeWifi() {if (mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);}}
}