下面是一个使用Java代码的示例,演示如何在Android 10上启用WiFi并连接到特定的WiFi网络。
首先,在AndroidManifest.xml文件中添加以下权限:
接下来,在您的活动类中,您可以使用以下代码来启用WiFi并连接到特定的WiFi网络:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final String SSID = "YourWiFiSSID";
private static final String PASSWORD = "YourWiFiPassword";
private ConnectivityManager.NetworkCallback networkCallback;
private WifiManager wifiManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
// 检查WiFi状态并启用WiFi
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
// 连接到指定的WiFi网络
connectToWifiNetwork();
}
private void connectToWifiNetwork() {
// 在Android 10及以上版本中,需要使用NetworkCallback来监听网络连接状态
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
super.onAvailable(network);
// 创建WiFi网络配置
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\"" + SSID + "\"";
wifiConfiguration.preSharedKey = "\"" + PASSWORD + "\"";
// 添加并连接到WiFi网络
int networkId = wifiManager.addNetwork(wifiConfiguration);
wifiManager.disconnect();
wifiManager.enableNetwork(networkId, true);
wifiManager.reconnect();
Log.d(TAG, "Connected to WiFi network: " + SSID);
Toast.makeText(MainActivity.this, "Connected to WiFi network: " + SSID, Toast.LENGTH_SHORT).show();
// 取消网络回调注册
connectivityManager.unregisterNetworkCallback(networkCallback);
}
@Override
public void onUnavailable() {
super.onUnavailable();
Log.e(TAG, "Failed to connect to WiFi network: " + SSID);
Toast.makeText(MainActivity.this, "Failed to connect to WiFi network: " + SSID, Toast.LENGTH_SHORT).show();
// 取消网络回调注册
connectivityManager.unregisterNetworkCallback(networkCallback);
}
};
connectivityManager.requestNetwork(builder.build(), networkCallback);
} else {
// 在Android 10以下版本中,可以直接连接到WiFi网络
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\"" + SSID + "\"";
wifiConfiguration.preSharedKey = "\"" + PASSWORD + "\"";
int networkId = wifiManager.addNetwork(wifiConfiguration);
wifiManager.disconnect();
wifiManager.enableNetwork(networkId, true);
wifiManager.reconnect();
Log.d(TAG, "Connected to WiFi network: " + SSID);
Toast.makeText(MainActivity.this, "Connected to WiFi network: " + SSID, Toast.LENGTH_SHORT).show();
}
}
}
请注意,您需要将YourWiFiSSID
和YourWiFiPassword
替换为实际的WiFi网络名称和密码。
此代码首先检查WiFi状态并启用WiFi,然后使用ConnectivityManager
和NetworkCallback
在Android 10及以上版本中监听网络连接状态。在连接到WiFi网络后,它将使用WifiConfiguration
来创建WiFi网络配置,并使用WifiManager
将设备连接到指定的WiFi网络。
希望这可以帮助到您!