【发布时间】:2017-09-24 18:45:33
【问题描述】:
如何检查我输入的WiFi名称是否存在于我所在的区域?
这个想法是从 WiFi 网络中获取名称,将它们与我输入的名称进行比较并返回一个布尔值。
这是我使用的代码,它总是返回 false。
wifiMgr = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiMgr.startScan();
private class WifiScanReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = wifiMgr.getScanResults();
wifis = new String[wifiScanList.size()];
for (int i = 0; i < wifiScanList.size(); i++) {
wifis[i] = wifiScanList.get(i).toString();
}
}
}
private boolean doesWifiExist(String string){
String[] array = string.split(" ");
String wifi = array[0];
boolean flag = false;
for (int i = 0; i < wifis.length; i++) {
if(wifis[i].equals(wifi)){
flag = true;
break;
}
}
return flag;
}
这是我添加的代码和我使用的清单中的权限
public boolean isInternetPermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Manifest.permission.ACCESS_WIFI_STATE)
== PackageManager.PERMISSION_GRANTED) {
Log.v("PermissionGranted", "Permission is granted");
return true;
} else {
Log.v("PermissionGranted", "Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_WIFI_STATE}, 1);
return false;
}
} else { //permission is automatically granted on sdk<23 upon installation
Log.v("PermissionGranted", "Permission is granted");
return true;
}
}
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
【问题讨论】:
标签: java android wifi android-wifi wifimanager