Ich möchte Wlan Scan-Ergebnis auf meinem Marshmallow-Gerät bekommen.
Erstens, meine Gegend haben viele Wifi AP.
Wenn Wifi Scan-Ergebnis auf Marshmallow-Gerät erhalten. fügen Sie ACCESS_COARSE_LOCATION
Erlaubnis hinzu.Wie bekomme ich Wlan Scan Ergebnis auf Android Marshmallow?
meine Quelle
@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;
}
Mit dieser Quelle auf Eibisch Gerät oder gradle targetSdkVersion
über 23 wifi Scan-Ergebnis null, aber für gradle targetSdkVersion unter 21 oder kitkat Gerät.
wifi scan ergebnis viele wifi ap.
Warum WLAN-Scan-Ergebnis null auf Marshmallow-Gerät?