package rocks.susurrus.susurrus.receivers;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;
/**
* Receives broadcasts from the wifi supplicant client on connection changes.
* Forces disconnects if the smartphone tries to receonnect to an access point.
*/
public class DisconnectorReceiver extends BroadcastReceiver {
static final String LOG_TAG = "DisconnectorReceiver";
/**
* Constants
*/
public static final String SUPPLICANT_SCANNING = "SCANNING";
/**
* Data
*/
private WifiManager wifiManager;
/**
* Class Constructor.
* @param wifiManager Instance of the Android wifiManager.
*/
public DisconnectorReceiver(WifiManager wifiManager) {
this.wifiManager = wifiManager;
}
@Override
/**
* Is executed whenever a wifi-supplicant-event was broadcasted.
*/
public void onReceive(Context context, Intent intent) {
String wifiState = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE).toString();
// supplicant started scanning again?
if(wifiState.equals(this.SUPPLICANT_SCANNING)) {
// force disconnect
wifiManager.disconnect();
}
}
}