I created a brodcastReceiver for Wi-Fi ,every thing is working fine ,except ,that when i lunch the application ,the broadcastreceiver start directly scanning ,and i can't stop it, and keeps running even i go out from the application. I tryed to controle the broadcast receiver from the main activity ,but it seems that there is a broblem. Can someone take a look to my code, and if it's possible ,tell me what could be the problem.
Thank you in advance.
PS :when click buttons ,the toasts are working,but there is no influence on the brodcast receiver.
I'm lunching a service in the brodcastreceiver, could it have an influence on the broblem ?
**EDIT**
This is my MainActivity
public class MainActivity extends Activity {
int newRssi;
List<String> listDebitDistance = new ArrayList<String>();
WifiManager wifi;
private final BroadcsatReceiverMnager broad = new BroadcsatReceiverMnager();
ArrayList<int[]> listCursorReçue = new ArrayList<int[]>();
IntentFilter rssiFilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* This method enables the Broadcast receiver registered in the AndroidManifest file.
* @param view
*/
public void enableBroadcastReceiver(View view){
switch (view.getId()){
case R.id.button1 :
super.registerReceiver(broad, new IntentFilter("android.intent.action.BOOT_COMPLETED"));
this.registerReceiver(broad, rssiFilter);
WifiManager wifiMan=(WifiManager)MainActivity.this.getSystemService(Context.WIFI_SERVICE);
wifiMan.startScan();
Toast.makeText(this, "Enabled broadcast receiver", Toast.LENGTH_SHORT).show();
break;
}
}
/**
* This method disables the Broadcast receiver registered in the AndroidManifest file.
* @param view
*/
public void disableBroadcastReceiver(View view){
switch (view.getId()){
case R.id.button2 :
//this.unregisterReceiver(broad); //this gives the exception
unregisterReceiver(broad); //this methode gives the exception too
Toast.makeText(this, "Disabled broadcst receiver", Toast.LENGTH_SHORT).show();
break;
}
}
public void onPause() {
super.onPause();
this.unregisterReceiver(broad);
//S'il y a un appel l'app crash !!! a voir !!!!
}
/**
* Broadcast receiver to update
*/
public void onResume() {
super.onResume();
// BroadcsatReceiverMnager broad = new BroadcsatReceiverMnager();
//Note: Not using RSSI_CHANGED_ACTION because it never calls me back.
WifiManager wifiMan=(WifiManager)MainActivity.this.getSystemService(Context.WIFI_SERVICE);
wifiMan.startScan();
}
}
And this is my BroadcsatReceiverMnager class
public class BroadcsatReceiverMnager extends BroadcastReceiver {
int newRssi;
int rssi1 ;
int rssi2;
int rssi3 ;
int rssiOp1=0 ;
int rssiOp2 =0 ;
int rssiOp3=0 ;
WifiManager wifi;
@Override
public void onReceive(Context arg0, Intent arg1) {
Toast.makeText(arg0,"MyTag BroadcsatReceiverMnager "+ "onReceive", Toast.LENGTH_LONG).show();
wifi = (WifiManager)arg0.getSystemService(Context.WIFI_SERVICE);
if(arg1.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION )){//
List<ScanResult> results = wifi.getScanResults();
Toast.makeText(arg0, "results"+results, Toast.LENGTH_SHORT).show();
rssiOp1 = results.get(0).level;
rssiOp2 = results.get(1).level;
rssiOp3 = results.get(2).level;
}
WifiManager wifiMan=(WifiManager)arg0.getSystemService(Context.WIFI_SERVICE);
wifiMan.startScan();
int newRssi = wifiMan.getConnectionInfo().getRssi();
Toast.makeText(arg0, "BroadcsatReceiverMnager"+newRssi, Toast.LENGTH_SHORT).show();
}
}