在位置已关闭的情况下扫描Android中的wifi网络

时间:2017-08-07 11:18:53

标签: android broadcastreceiver android-wifi

我正在努力让无线网络可以做到这一点:

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网络?

2 个答案:

答案 0 :(得分:0)

这是Android 6的安全性。它不允许您在未启用位置的情况下获取WIFI扫描结果。但是我找到了与此主题类似的权限。 PEERS_MAC_ADDRESS是一项权限,允许应用在不转换位置的情况下获取扫描结果。

但遗憾的是,在添加权限后,我没有成功获得scanresult。

答案 1 :(得分:0)

获取scanResults而不在Android版本的Lollipop及更高版本上启用GPS的唯一方法是将应用的targetSDKversion设置为21或更低。