2017-08-22 3 views
0

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?

Antwort

0

Weil Ihr es in der else Aussage des if-else-Anweisung außerhalb der Berechtigungen Aufruf if(permission == denied)

Ihre result = getScanWifiResult() sollte.

Verwandte Themen