Skip to content

Commit 390d96c

Browse files
- preserve location not enabled dialog on orientation change
1 parent 1e74b0b commit 390d96c

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

app/src/main/java/com/adafruit/bluefruit/le/connect/app/MainActivity.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.adafruit.bluefruit.le.connect.ble.BleDevicesScanner;
4141
import com.adafruit.bluefruit.le.connect.ble.BleManager;
4242
import com.adafruit.bluefruit.le.connect.ble.BleUtils;
43+
import com.adafruit.bluefruit.le.connect.ui.utils.DialogUtils;
4344
import com.adafruit.bluefruit.le.connect.ui.utils.ExpandableHeightExpandableListView;
4445

4546
import java.util.ArrayList;
@@ -164,7 +165,7 @@ public void run() {
164165

165166
// Check if bluetooth adapter is available
166167
final boolean wasBluetoothEnabled = manageBluetoothAvailability();
167-
final boolean areLocationServicesReadyForScanning = manageLocationServiceAvailabiltyForScanning();
168+
final boolean areLocationServicesReadyForScanning = manageLocationServiceAvailabilityForScanning();
168169

169170
// Reset bluetooth
170171
if (autoResetBluetoothOnStart && wasBluetoothEnabled && areLocationServicesReadyForScanning) {
@@ -372,15 +373,16 @@ private boolean manageBluetoothAvailability() {
372373
}
373374
if (errorMessageId > 0) {
374375
AlertDialog.Builder builder = new AlertDialog.Builder(this);
375-
builder.setMessage(errorMessageId)
376+
AlertDialog dialog = builder.setMessage(errorMessageId)
376377
.setPositiveButton(R.string.dialog_ok, null)
377378
.show();
379+
DialogUtils.keepDialogOnOrientationChanges(dialog);
378380
}
379381

380382
return isEnabled;
381383
}
382384

383-
private boolean manageLocationServiceAvailabiltyForScanning() {
385+
private boolean manageLocationServiceAvailabilityForScanning() {
384386

385387
boolean areLocationServiceReady = true;
386388

@@ -397,9 +399,10 @@ private boolean manageLocationServiceAvailabiltyForScanning() {
397399
if (!areLocationServiceReady) {
398400

399401
AlertDialog.Builder builder = new AlertDialog.Builder(this);
400-
builder.setMessage(R.string.dialog_error_nolocationservices_requiredforscan_marshmallow)
402+
AlertDialog dialog = builder.setMessage(R.string.dialog_error_nolocationservices_requiredforscan_marshmallow)
401403
.setPositiveButton(R.string.dialog_ok, null)
402404
.show();
405+
DialogUtils.keepDialogOnOrientationChanges(dialog);
403406
}
404407
}
405408

@@ -433,9 +436,11 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
433436
resumeScanning();
434437
} else if (resultCode == Activity.RESULT_CANCELED) {
435438
AlertDialog.Builder builder = new AlertDialog.Builder(this);
436-
builder.setMessage(R.string.dialog_error_no_bluetooth)
439+
AlertDialog dialog = builder.setMessage(R.string.dialog_error_no_bluetooth)
437440
.setPositiveButton(R.string.dialog_ok, null)
438441
.show();
442+
DialogUtils.keepDialogOnOrientationChanges(dialog);
443+
439444
}
440445
} else if (requestCode == kActivityRequestCode_Settings) {
441446
// Return from activity settings. Update app behaviour if needed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.adafruit.bluefruit.le.connect.ui.utils;
2+
3+
import android.app.Dialog;
4+
import android.view.WindowManager;
5+
6+
public class DialogUtils {
7+
8+
// Prevent dialog dismiss when orientation changes
9+
// http://stackoverflow.com/questions/7557265/prevent-dialog-dismissal-on-screen-rotation-in-android
10+
public static void keepDialogOnOrientationChanges(Dialog dialog){
11+
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
12+
lp.copyFrom(dialog.getWindow().getAttributes());
13+
lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
14+
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
15+
dialog.getWindow().setAttributes(lp);
16+
}
17+
}

0 commit comments

Comments
 (0)