I Want to get a List of available WIFis and I followed this question: how to get available wifi networks and display them in a list in android
But there is a problem that most of the time it doesn't return WiFi list! (When I run my application on devices below android 6 it works well.)
This is my code:
WifiManager mainWifi;
WifiReceiver receiverWifi;
List<ScanResult> wifiList;
StringBuilder sb = new StringBuilder();
private final Handler handler = new Handler();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new PermissionHandler().checkPermission(this, permissions, new PermissionHandler.OnPermissionResponse() {
@Override
public void onPermissionGranted() {
mainWifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (mainWifi.isWifiEnabled() == false)
{
// If wifi disabled then enable it
Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled",
Toast.LENGTH_LONG).show();
mainWifi.setWifiEnabled(true);
}
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mainWifi.startScan();
}
@Override
public void onPermissionDenied(Activity activity, String[] deniedPermissions, PermissionHandler.OnPermissionResponse listener) {
}
});
}
class WifiReceiver extends BroadcastReceiver {
// This method call when number of wifi connections changed
public void onReceive(Context c, Intent intent) {
sb = new StringBuilder();
wifiList = mainWifi.getScanResults();
sb.append("\n Number Of Wifi connections :"+wifiList.size()+"\n\n");
for(int i = 0; i < wifiList.size(); i++){
sb.append(new Integer(i+1).toString() + ". ");
sb.append((wifiList.get(i)).toString());
sb.append("\n\n");
Log.i("LOGO_WIFI", sb.toString());
}
}
}
And I got these permissions in the manifest
and at runtime:
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
Manifest.permission.ACCESS_WIFI_STATE
Manifest.permission.CHANGE_WIFI_STATE
Manifest.permission.ACCESS_NETWORK_STATE
Manifest.permission.CHANGE_NETWORK_STATE