Android Wifi --自动连接指定SSID(各种加密方式均可)

本文介绍了如何在Android中使用API自动连接到指定的SSID,涉及权限设置和关键代码示例,包括从Android Setting源码提取的相关类。内容适用于不同加密方式的WiFi连接,适合开发者学习参考。
摘要由CSDN通过智能技术生成

Android Wifi API参考网站这里写链接内容
1.开始先加入wifi权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
    </uses-permission>

2.自动连接指定SSID实现代码
wificonnect.java


import java.util.List;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.text.TextUtils;
import android.util.Log;


public class WifiConnect {
   
    private static final String TAG = "WifiConnect";
    //定义WifiManager对象
    private  WifiManager mWifiManager;
    // 定义WifiInfo对象    
    private WifiInfo mWifiInfo;  
    private AccessPoint mAccessPoint;
    private ScanResult mresult;
    private Context mcontext;

    //构造函数
    public WifiConnect(Context context){
        mcontext = context;
        // 取得WifiManager对象    
        mWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);   
        // 取得WifiInfo对象    
        mWifiInfo = mWifiManager.getConnectionInfo();
    }

    //打开wifi功能
     private boolean OpenWifi(){
         boolean bRet = true;
         if (!mWifiManager.isWifiEnabled()){
             bRet = mWifiManager.setWifiEnabled(true);
         }
         return bRet;
     }

     //从扫描结果中提取需要的wifi
     private boolean getScanResultsBySSID(String ssid){ 
         List<ScanResult> list = mWifiManager.getScanResults();
         for (ScanResult result : list){
            if (TextUtils.equals(result.SSID, ssid)){
                mresult=result;
                return true;
            }
         }
         return false;  
     }

     //查看以前是否也配置过这个网络
     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 Connect(String SSID, String Password)
     {
        if(!this.OpenWifi())
        {
             return false;
        }
        //开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi
        //状态变成WifiManager.WIFI_STATE_ENABLED的时候才能执行下面的语句
        while( !(mWifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLED) )
        {
            try{
                //为了避免程序一直while循环,让它睡个100毫秒在检测……
                Thread.currentThread();
                Thread.sleep(100);
            }
            catch(InterruptedException ie){
           }
        }
        Log.i(TAG, "---BeginScan-SSID---");
        //等待扫描完wifi
        while( !getScanResultsBySSID(SSID) )
        {
            try{
                //为了避免程序一直while循环,让它睡个100毫秒在检测……
                Thread.currentThread();
                Thread.sleep(100);
            }
            catch(InterruptedException ie){
            }
        }
        Log.i(TAG, "---EndScan-SSID---");
        WifiConfiguration config = new WifiConfiguration();
        mAccessPoint = new AccessPoint(mcontext,mresult);
        //判断以前是否保存过此WIFI环境
        WifiConfiguration tempConfig = this
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值