要获取Android 10+可用的WiFi网络列表,您可以使用以下代码示例:
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Build;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final int PERMISSIONS_REQUEST_CODE = 123;
@Override
protected void onStart() {
super.onStart();
// 检查并请求WiFi权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_REQUEST_CODE);
} else {
// 已获得权限,获取WiFi网络列表
getWifiNetworks();
}
} else {
// Android 10以下不需要WiFi权限,直接获取WiFi网络列表
getWifiNetworks();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授予了WiFi权限,获取WiFi网络列表
getWifiNetworks();
}
}
}
private void getWifiNetworks() {
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
List scanResults = wifiManager.getScanResults();
for (ScanResult scanResult : scanResults) {
String ssid = scanResult.SSID;
// 可以在此处进一步处理WiFi网络列表
// ...
}
}
}
此代码示例首先检查并请求WiFi权限。如果运行在Android 10+设备上,它会请求ACCESS_FINE_LOCATION
权限,因为在Android 10及更高版本中,访问WiFi网络列表需要位置权限。如果权限被授予,getWifiNetworks()
方法将被调用来获取WiFi网络列表。
在getWifiNetworks()
方法中,我们使用WifiManager
类来获取WiFi网络列表。然后,您可以根据您的需求进一步处理WiFi网络列表。
请注意,您需要在AndroidManifest.xml文件中添加必要的权限声明: