[英]How to get the missing Wifi MAC Address in Android Marshmallow and later?
[英]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.