Android开发,连接到指定WIFI

//拿到WifiManager
WifiManager wifiManager = (WifiManager) MainActivity.this
                                        .getSystemService(Context.WIFI_SERVICE);

//判断wifi是否打开
if (!wifiManager.isWifiEnabled()) {
    wifiManager.setWifiEnabled(true);
}
//因为打开需要时间,所以要等一下
while (!wifiManager.isWifiEnabled()) {
        SystemClock.sleep(100);
}

// wifi的conf参数
WifiConfiguration conf = new WifiConfiguration();
//连接WAP时,设置如下
conf.SSID = "\"" + networkSSID + "\"";
conf.preSharedKey = "\"" + networkPass + "\"";
// 连接公网时设置如下
// conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
//如果是WEP的加密协议,就用如下设置
//conf.wepKeys[0] = "\"" + networkPass + "\""; 
//conf.wepTxKeyIndex = 0;
//conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
//conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
// 把wifi的conf参数设置进来
wifiManager.addNetwork(conf);
// 获得wifi列表里面的所有wifi连接,如果连接的不是我们要连接的wifi,就重新连接
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();

for (WifiConfiguration i : list) {
    Log.d(TAG, "ssid" + i.SSID);
    if (i.SSID != null&& i.SSID.equals("\"" + networkSSID + "\"")) {
        Log.d(TAG, networkSSID + "------" + networkPass);
        wifiManager.disconnect();
        wifiManager.enableNetwork(i.networkId, true);
        boolean reconnect = wifiManager.reconnect();
        //连接出错,跳转
        if (!reconnect) {
            Intent intent = new Intent(getApplicationContext(),ErrorActivity.class);
            startActivity(intent);
            finish();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是连接指定wifiAndroid 11代码示例: 1. 在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> ``` 2. 在Activity中添加以下代码: ```java private static final String SSID = "指定Wi-Fi名称"; private static final String PASSWORD = "指定Wi-Fi密码"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 检查是否已连接指定Wi-Fi if (isConnectedToSSID(SSID)) { Toast.makeText(this, "已连接指定Wi-Fi", Toast.LENGTH_SHORT).show(); } else { // 连接指定Wi-Fi connectToSSID(SSID, PASSWORD); } } private boolean isConnectedToSSID(String ssid) { WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); return wifiInfo != null && ssid.equals(wifiInfo.getSSID()); } private void connectToSSID(String ssid, String password) { WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder(); builder.setSsid(ssid); builder.setWpa2Passphrase(password); WifiNetworkSpecifier wifiNetworkSpecifier = builder.build(); NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder(); networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); networkRequestBuilder.setNetworkSpecifier(wifiNetworkSpecifier); NetworkRequest networkRequest = networkRequestBuilder.build(); ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); connectivityManager.requestNetwork(networkRequest, new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(@NonNull Network network) { super.onAvailable(network); wifiManager.bindProcessToNetwork(network); Toast.makeText(MainActivity.this, "已连接指定Wi-Fi", Toast.LENGTH_SHORT).show(); } @Override public void onUnavailable() { super.onUnavailable(); Toast.makeText(MainActivity.this, "连接Wi-Fi失败", Toast.LENGTH_SHORT).show(); } }); } ``` 以上代码将检查是否已连接指定Wi-Fi,如果没有连接,则使用指定Wi-Fi名称和密码连接Wi-Fi网络。请注意,此代码需要在Android 10或更高版本上才能正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值