AlertDialog.show() is non-modal, so put code into callback. Also added unpairing.
This commit is contained in:
parent
2e7fb57172
commit
09502f96c9
|
@ -47,7 +47,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DeviceAttributesDao;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DeviceAttributesDao;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DeviceDao;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.MiBandActivitySampleDao;
|
import nodomain.freeyourgadget.gadgetbridge.entities.MiBandActivitySampleDao;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivityOverlayDao;
|
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivityOverlayDao;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivitySampleDao;
|
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivitySampleDao;
|
||||||
|
@ -300,12 +299,7 @@ public class ControlCenter extends GBActivity {
|
||||||
return true;
|
return true;
|
||||||
case R.id.controlcenter_delete_device:
|
case R.id.controlcenter_delete_device:
|
||||||
if (selectedDevice != null) {
|
if (selectedDevice != null) {
|
||||||
if (confirmDeleteDevice(selectedDevice)) {
|
confirmDeleteDevice(selectedDevice);
|
||||||
deleteDevice(selectedDevice);
|
|
||||||
selectedDevice = null;
|
|
||||||
Intent refreshIntent = new Intent(DeviceManager.ACTION_REFRESH_DEVICELIST);
|
|
||||||
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(refreshIntent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
|
@ -352,8 +346,7 @@ public class ControlCenter extends GBActivity {
|
||||||
startActivity(new Intent(this, DiscoveryActivity.class));
|
startActivity(new Intent(this, DiscoveryActivity.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean confirmDeleteDevice(final GBDevice gbDevice) {
|
private void confirmDeleteDevice(final GBDevice gbDevice) {
|
||||||
final boolean[] result = new boolean[1];
|
|
||||||
new AlertDialog.Builder(this)
|
new AlertDialog.Builder(this)
|
||||||
.setCancelable(true)
|
.setCancelable(true)
|
||||||
.setTitle(getString(R.string.controlcenter_delete_device_name, gbDevice.getName()))
|
.setTitle(getString(R.string.controlcenter_delete_device_name, gbDevice.getName()))
|
||||||
|
@ -361,7 +354,11 @@ public class ControlCenter extends GBActivity {
|
||||||
.setPositiveButton(R.string.Delete, new DialogInterface.OnClickListener() {
|
.setPositiveButton(R.string.Delete, new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
result[0] = true;
|
deleteDevice(selectedDevice);
|
||||||
|
DeviceHelper.getInstance().removeBond(selectedDevice);
|
||||||
|
selectedDevice = null;
|
||||||
|
Intent refreshIntent = new Intent(DeviceManager.ACTION_REFRESH_DEVICELIST);
|
||||||
|
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(refreshIntent);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(R.string.Cancel, new DialogInterface.OnClickListener() {
|
.setNegativeButton(R.string.Cancel, new DialogInterface.OnClickListener() {
|
||||||
|
@ -371,7 +368,6 @@ public class ControlCenter extends GBActivity {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.show();
|
.show();
|
||||||
return result[0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteDevice(final GBDevice gbDevice) {
|
private void deleteDevice(final GBDevice gbDevice) {
|
||||||
|
@ -381,7 +377,7 @@ public class ControlCenter extends GBActivity {
|
||||||
}
|
}
|
||||||
try (DBHandler dbHandler = GBApplication.acquireDB()) {
|
try (DBHandler dbHandler = GBApplication.acquireDB()) {
|
||||||
DaoSession session = dbHandler.getDaoSession();
|
DaoSession session = dbHandler.getDaoSession();
|
||||||
Device device = DBHelper.getDevice(gbDevice, session);
|
Device device = DBHelper.findDevice(gbDevice, session);
|
||||||
if (device != null) {
|
if (device != null) {
|
||||||
long deviceId = device.getId();
|
long deviceId = device.getId();
|
||||||
QueryBuilder qb;
|
QueryBuilder qb;
|
||||||
|
|
|
@ -8,6 +8,8 @@ import android.widget.Toast;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
|
@ -234,4 +236,28 @@ public class DeviceHelper {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to removing the bonding with the given device. Returns true
|
||||||
|
* if bonding was supposedly successful and false if anything went wrong
|
||||||
|
* @param device
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean removeBond(GBDevice device) {
|
||||||
|
BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||||
|
if (defaultAdapter != null) {
|
||||||
|
BluetoothDevice remoteDevice = defaultAdapter.getRemoteDevice(device.getAddress());
|
||||||
|
if (remoteDevice != null) {
|
||||||
|
try {
|
||||||
|
Method method = BluetoothDevice.class.getMethod("removeBond", (Class[]) null);
|
||||||
|
Object result = method.invoke(remoteDevice, (Object[]) null);
|
||||||
|
return Boolean.TRUE.equals(result);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOG.warn("Error removing bond to device: " + device);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue