【问题标题】:Scan for wifi networks in Android with location turned off在关闭位置的情况下扫描 Android 中的 wifi 网络
【发布时间】:2017-08-07 11:18:52
【问题描述】:

我正在尝试获取可用的 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 网络?

【问题讨论】:

    标签: android broadcastreceiver android-wifi


    【解决方案1】:

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

    可惜我添加权限后没有成功得到扫描结果。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-29
        相关资源
        最近更新 更多