![](/img/trans.png)
[英]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.