1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-03-15 07:29:15 +01:00

OP-825 Only attempt to unregister broadcast receivers if they have been registered

This commit is contained in:
David Willis 2013-02-06 00:09:03 +00:00
parent 3b5f3c8125
commit 40a157fbad

View File

@ -65,6 +65,8 @@ public class HidUAVTalk extends TelemetryTask {
private boolean readPending = false;
private boolean writePending = false;
private IntentFilter deviceAttachedFilter;
private boolean usbReceiverRegistered = false;
private boolean usbPermissionReceiverRegistered = false;
public HidUAVTalk(OPTelemetryService service) {
super(service);
@ -74,8 +76,14 @@ public class HidUAVTalk extends TelemetryTask {
public void disconnect() {
CleanUpAndClose();
telemService.unregisterReceiver(usbReceiver);
telemService.unregisterReceiver(usbPermissionReceiver);
if(usbReceiverRegistered){
telemService.unregisterReceiver(usbReceiver);
usbReceiverRegistered = false;
}
if(usbPermissionReceiverRegistered){
telemService.unregisterReceiver(usbPermissionReceiver);
usbPermissionReceiverRegistered = false;
}
super.disconnect();
@ -110,11 +118,13 @@ public class HidUAVTalk extends TelemetryTask {
permissionIntent = PendingIntent.getBroadcast(telemService, 0, new Intent(ACTION_USB_PERMISSION), 0);
permissionFilter = new IntentFilter(ACTION_USB_PERMISSION);
telemService.registerReceiver(usbPermissionReceiver, permissionFilter);
usbPermissionReceiverRegistered = true;
deviceAttachedFilter = new IntentFilter();
deviceAttachedFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
deviceAttachedFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
telemService.registerReceiver(usbReceiver, deviceAttachedFilter);
usbReceiverRegistered = true;
// Go through all the devices plugged in
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();