锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Android 应用内连接指定 WIFI

时间:2023-02-07 12:00:01 1208tj2连接器2431tj62连接器y27a2024tj圆形连接器

广播过滤Action
 WifiManager.NETWORK_STATE_CHANGED_ACTION

工具类

package com.yw.wifipage.wifi;  import android.content.Context; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Handler;  import com.yw.wifipage.receiver.WifiChangeReceiver;  public class WifiConnectUtil {      private boolean isConnect = false;     private WifiChangeReceiver receiver;      public void connect(Context context, String ssid, String bssid, String password, int timeOut, IConnectListener listener) {          String mssid = ssid.replace("\"", "");          WifiConfiguration wifiCong = new WifiConfiguration();         wifiCong.allowedAuthAlgorithms.clear();         wifiCong.allowedGroupCiphers.clear();         wifiCong.allowedKeyManagement.clear();         wifiCong.allowedPairwiseCiphers.clear();         wifiCong.allowedProtocols.clear();         wifiCong.SSID = "\""   mssid   "\"";         wifiCong.BSSID = bssid;         wifiCong.preSharedKey = "\""   password   "\"";//WPA-PSK密码         wifiCong.hiddenSSID = false;         wifiCong.status = WifiConfiguration.Status.ENABLED;         int id = MyNetworkUtil.getInstance().getWifiManager().addNetwork(wifiCong);         MyNetworkUtil.getInstance().getWifiManager().enableNetwork(id, true);          ////注册广播快速监控连接状态         receiver = new WifiChangeReceiver(networkInfo -> {             if (networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {                 WifiInfo wifiInfo = MyNetworkUtil.getInstance().getWifiInfo();                 if (wifiInfo.getSSID().replace("\"", "").equals(mssid)) {                     isConnect = true;                     if (receiver != null) {                         context.unregisterReceiver(receiver);                         receiver = null;                         listener.onConnected();                     }                 }             }         });          IntentFilter intentFilter = new IntentFilter();         intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);         context.registerReceiver(receiver, intentFilter);         ///延迟监控变化         new Handler().postDelayed(new Runnable() {             @Override             public void run() {                 if (isConnect) {                     return;                 }                 if (receiver != null) {                     context.unregisterReceiver(receiver);                 }                 MyNetworkUtil.getInstance().getWifiManager().removeNetwork(id);                 MyNetworkUtil.getInstance().getWifiManager().reconnect();                 listener.onConnectFail();             }         }, timeOut);     }       public interface IConnectListener {         void onConnected();         void onConnectFail();     } } 

广播接收器

package com.yw.wifipage.receiver;  import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.NetworkInfo; import android.net.wifi.WifiManager; import android.os.Parcelable;  public class WifiChangeReceiver extends BroadcastReceiver {     private String TAG = "WifiChangeReceiver";     private IWIfiChangeCallBack iwIfiChangeCallBack;      public WifiChangeReceiver(IWIfiChangeCallBack iwIfiChangeCallBack) {         this.iwIfiChangeCallBack = iwIfiChangeCallBack;     }      @Override     public void onReceive(Context context, Intent intent) {         Parcelable extra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);         if (extra != null) {             NetworkInfo networkInfo = (NetworkInfo) extra;             if (networkInfo != null) {                 iwIfiChangeCallBack.onChange(networkInfo);             }         }     } } 

使用方法

new WifiConnectUtil().connect(context, SSID, BSSID, password, 10000,                          new WifiConnectUtil.IConnectListener() {                     @Override                     public void onConnected() {                         Toast.makeText(context, "连接成功", Toast.LENGTH_SHORT).show();                                           }                      @Override                     public void onConnectFail() {                         Toast.makeText(context, "密码错误", Toast.LENGTH_SHORT).show();                                             }                 });

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章