android 开机Wifi自动去连接某个AP

来源:互联网 发布:数据库王珊第5版pdf 编辑:程序博客网 时间:2024/05/18 00:56
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;

public class WifiAutoOpen extends BroadcastReceiver{

    private WifiManager wifiManager;
    private WifiConfiguration config;
    private int wifiState;
    private Context context;
    
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Log.i("WifiAutoOpen", ">>>>>>>>>>>>>>>>>>>>boot complete<<<<<<<<<<<<<<<<");
        this.context = context;
        wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        wifiState = wifiManager.getWifiState();
        if(wifiState != WifiManager.WIFI_STATE_ENABLING || wifiState != WifiManager.WIFI_STATE_ENABLED) {
            wifiManager.setWifiEnabled(true);
        }
        wifiThread.start();
        
    }
    
    Thread wifiThread = new Thread(){
        @Override
        public void run() {
            // TODO Auto-generated method stub
            super.run();
            for(;;) {
                if(!checkWifiConnect()) {
                    if(wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
                        config = new WifiConfiguration();
                        config.SSID = "\"" + "WifiAP" + "\"";
                        config.preSharedKey = "\"" + "wifiap123" + "\"";
                        int networkId = wifiManager.addNetwork(config);
                        wifiManager.updateNetwork(config);
                        wifiManager.saveConfiguration();
                        wifiManager.enableNetwork(networkId, true);
                        wifiManager.reconnect();
                        break;
                    }
                }
            }
        }
        
        private boolean checkWifiConnect() {
            ConnectivityManager connectManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo[] networkInfo = connectManager.getAllNetworkInfo();
            if(networkInfo != null) {
                for(int i = 0; i < networkInfo.length; i ++) {
                    if(networkInfo[i].getType() == connectManager.TYPE_WIFI) {
                        return true;
                    }
                }
            }
            return false;
        }
    };
    

}