繁体   English   中英

如何在Android棉花糖上获取wifi扫描结果?

[英]How to get wifi scan result on android marshmallow?

我想在棉花糖设备上获得wifi扫描结果。
首先,我所在的地区有很多wifi AP。
如果在棉花糖设备上获得wifi扫描结果。 添加ACCESS_COARSE_LOCATION权限。

我的来源

@Override
public void onClick(View v) { 

        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
            int permissionResult = checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION);

            if (permissionResult == PackageManager.PERMISSION_DENIED) {

                if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_COARSE_LOCATION)) {
                    AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                    dialog.setTitle("need permission")
                            .setMessage("permission grant?")
                            .setPositiveButton("yes", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                        requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1000);
                                    }
                                }
                            }).setNegativeButton("no", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "cancel", Toast.LENGTH_LONG).show();
                        }
                    }).create().show();

                } else {
                    requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1000);
                }
            } else {
                result = getScanWifiResult();
            }

    }
}


@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == 1000) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                Log.d(TAG, "request permission");
                result = mUtils.getScanWifiResult();
            }
        } else {
            Toast.makeText(MainActivity.this, "permission denied", Toast.LENGTH_LONG).show();
        }
    }
}



public List<String> getScanWifiResult() {
    List<ScanResult> result;
    mWifiManager.startScan(); // service register
    result = mWifiManager.getScanResults();
    ArrayList<String> ssid = new ArrayList<String>();
    if (result != null) {
        for (ScanResult scan : result) {
             ssid.add(scan.SSID);
        }
    } 
    return ssid;
  }

如果该源位于棉花糖设备或23之上的gradle targetSdkVersion ,则wifi扫描结果为空,但对于21之下的kitdle设备或grakat装置的gradle targetSdkVersion无效。
wifi扫描结果很多wifi ap。

为什么wifi扫描结果在棉花糖设备上为空?

因为您在if(permission == denied)else语句中调用它

您的result = getScanWifiResult()应该在权限if-else语句之外。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM