如何在android marshmallow上进行wifi扫描?添加ACCESS_COARSE_LOCATION

时间:2017-08-21 06:43:42

标签: android

我的设备sdk版本25和marshmallow。

所以,我使用wifi扫描这个来源。

public List<String> getScanWifiResult() {
   List<ScanResult> result;

   mWifiManager.startScan();
   result = mWifiManager.getScanResult();

   ArrayList<String> ssids = new ArrayList<String>();
   if (result != null) {
      for (ScanResult scan : resultList) {
           ssids.add(scan.SSID);
      }
   }
   return ssids;  
}

如果我在kitkat设备上Log.d("DDD", "result->" + result),当前的无线网络显示。

但是在棉花糖设备上。空值..

所以,我搜索谷歌。

首先我添加清单

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

并添加manifest check code

private List<String> result;
@Override
public void onClick(View v) {
    if (v.getId() == R.id.scan_btn) {
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                 checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
          requestPermissions(new String[] {Manifest.permission.ACCESS_COARSE_LOCATION}, 111};
       } else {
              result = getScanWifiResult();
       }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 111) {
            result = getScanWifiResult();
        }
    }

另外,marshmallow设备wifi扫描值为null。

如何在android marshmallow设备上获得wifi扫描结果?

0 个答案:

没有答案