From e1753cfa181787d1188123e40ad9a599fbbd888a Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Sat, 29 Feb 2020 14:14:52 -0800 Subject: [PATCH] fix BLE permissions error found by the autotester: /// The following call might return null if the user doesn't have bluetooth access permissions val s: BluetoothLeScanner? = bluetoothAdapter.bluetoothLeScanner if(s == null) { ScanUIState.errorText = "This application requires bluetooth access. Please grant access in android settings." } --- .../com/geeksville/mesh/ui/BTScanScreen.kt | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/BTScanScreen.kt b/app/src/main/java/com/geeksville/mesh/ui/BTScanScreen.kt index be485ac7..6274f386 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/BTScanScreen.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/BTScanScreen.kt @@ -110,22 +110,27 @@ fun BTScanScreen() { if (ScanUIState.selectedMacAddr == null) ScanUIState.changeSelection(context, testnodes.first().macAddress) } else { - val s = bluetoothAdapter.bluetoothLeScanner - // ScanState.scanner = scanner + /// The following call might return null if the user doesn't have bluetooth access permissions + val s: BluetoothLeScanner? = bluetoothAdapter.bluetoothLeScanner - ScanState.debug("starting scan") + if(s == null) { + ScanUIState.errorText = "This application requires bluetooth access. Please grant access in android settings." + } + else { + ScanState.debug("starting scan") - // filter and only accept devices that have a sw update service - val filter = - ScanFilter.Builder() - .setServiceUuid(ParcelUuid(RadioInterfaceService.BTM_SERVICE_UUID)) - .build() + // filter and only accept devices that have a sw update service + val filter = + ScanFilter.Builder() + .setServiceUuid(ParcelUuid(RadioInterfaceService.BTM_SERVICE_UUID)) + .build() - val settings = - ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build() - s.startScan(listOf(filter), settings, scanCallback) - ScanState.scanner = s - ScanState.callback = scanCallback + val settings = + ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build() + s.startScan(listOf(filter), settings, scanCallback) + ScanState.scanner = s + ScanState.callback = scanCallback + } } onDispose {