我正在努力让无线网络可以做到这一点:
private WifiManager wifiManager;
private List<ScanResult> scanResults;
class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive");
scanResults = wifiManager.getScanResults();
Log.d(TAG, "" + scanResults.size());
for (ScanResult scanResult : scanResults) {
Log.d(TAG, scanResult.SSID);
}
}
}
private class TaskScan extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
wifiManager.setWifiEnabled(true);
wifiManager.startScan();
return null;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiReceiver wifiReceiver = new WifiReceiver();
registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
try {
(new TaskScan()).execute().get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
但是当关闭位置时,列表scanResults的大小始终为0。
无论如何在没有启用位置的情况下扫描wifi网络?
答案 0 :(得分:0)
这是Android 6的安全性。它不允许您在未启用位置的情况下获取WIFI扫描结果。但是我找到了与此主题类似的权限。 PEERS_MAC_ADDRESS
是一项权限,允许应用在不转换位置的情况下获取扫描结果。
但遗憾的是,在添加权限后,我没有成功获得scanresult。
答案 1 :(得分:0)
获取scanResults而不在Android版本的Lollipop及更高版本上启用GPS的唯一方法是将应用的targetSDKversion
设置为21或更低。