0

I tried to learn how to develop an Apps for scanning Access Points. I read many references and watched many videos. Among them are the following: Android 6.0 bug ? Have permission but getScanResults() still return empty list in Android 6.0

The method checkSelfPermission(Context, String) is undefined for the type ContextCompat

Wifi scan results broadcast receiver not working

https://www.youtube.com/watch?v=MrrBlxq33ms&t=181s

Please try my code and see if it runs on your device and if it give the list of Access Points. If not please advice. Thanks in advance

public class MainActivity extends AppCompatActivity {

Switch aSwitch;
WifiManager wifiManager;
TextView textView;
//Context mContext;

private static final int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //mContext = (Manifest.permission) this;
    setContentView(R.layout.activity_main);
    aSwitch = (Switch) findViewById(R.id.myswitch);
    textView = (TextView) findViewById(R.id.textView);
    wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    //reg switch
    if (Build.VERSION.SDK_INT >= 23) {
        checkPermission();
    }

    aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //to switch on
            if (isChecked && !wifiManager.isWifiEnabled()) {
                wifiManager.setWifiEnabled(true);
            } else if (!isChecked && wifiManager.isWifiEnabled()) {
              wifiManager.setWifiEnabled(false);
            }
       }
    });

    //WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    //textView.setText("\n\n Wifi status: " + wifiInfo.toString());


}

private boolean checkPermission() {

    List<String> permissionsList = new ArrayList<String>();

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        permissionsList.add(Manifest.permission.ACCESS_FINE_LOCATION);
    }
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        permissionsList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
    }

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) {
        permissionsList.add(Manifest.permission.ACCESS_WIFI_STATE);
    }

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) {
        permissionsList.add(Manifest.permission.CHANGE_WIFI_STATE);
    }

    if (permissionsList.size() > 0) {
        ActivityCompat.requestPermissions(this, permissionsList.toArray(new String[permissionsList.size()]),
                REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
        return false;
    }
    return true;

}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
            if (permissions.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED ||
                    (permissions.length == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED)){
                onContinue();
            }
            else {
                // Permission Denied
                //Usually it works and I am thinking to add a toast later on
            }
            break;
    }
}



//@Override
void onContinue() {
    MyBroadCastReceiver myBroadCastReceiver = new MyBroadCastReceiver();
    // register WiFi scan results receiver
    IntentFilter filter = new IntentFilter();
    filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
    registerReceiver(myBroadCastReceiver, filter);
    wifiManager.startScan();
    super.onResume();
}

class MyBroadCastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        StringBuffer stringBuffer = new StringBuffer();
        List<ScanResult> scanResults = wifiManager.getScanResults();
        if (scanResults != null && !scanResults.isEmpty()) {
            for (ScanResult scanResult : scanResults) {
                stringBuffer.append(scanResult);
            }
            textView.setText(stringBuffer);

        }

    }
}

}

  • Welcome to Stack Overflow. Please have a look at [Tour](https://stackoverflow.com/tour) and [Asking](https://stackoverflow.com/help/asking). – Shiro Jun 03 '17 at 23:05
  • Why do you want us to try your code? Is your code not working, or do you get an error? – Rockney Jun 03 '17 at 23:20

0 Answers0