From 77719f5bcde3844b25fe4360cbac9c71df507acd Mon Sep 17 00:00:00 2001 From: michel Date: Tue, 11 Jul 2023 22:20:59 +0200 Subject: [PATCH] Bluetooth settings: handle missing permissions fixes #1637 --- .../opentracks/settings/SensorsSettingsFragment.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/de/dennisguse/opentracks/settings/SensorsSettingsFragment.java b/src/main/java/de/dennisguse/opentracks/settings/SensorsSettingsFragment.java index a066a21a7..3f39f6377 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SensorsSettingsFragment.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SensorsSettingsFragment.java @@ -2,14 +2,17 @@ package de.dennisguse.opentracks.settings; import android.os.Bundle; import android.util.Log; +import android.widget.Toast; import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentActivity; import androidx.preference.EditTextPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.settings.bluetooth.BluetoothLeSensorPreference; +import de.dennisguse.opentracks.util.PermissionRequester; public class SensorsSettingsFragment extends PreferenceFragmentCompat { @@ -30,6 +33,13 @@ public class SensorsSettingsFragment extends PreferenceFragmentCompat { @Override public void onDisplayPreferenceDialog(Preference preference) { if (preference instanceof BluetoothLeSensorPreference) { + if(!PermissionRequester.BLUETOOTH.hasPermission(preference.getContext())) { + // TODO: maybe use requestPermissionsIfNeeded here or disable preferences at all + FragmentActivity activity = getActivity(); + Toast.makeText(activity, getString(R.string.permission_bluetooth_failed), Toast.LENGTH_LONG).show(); + return; + } + DialogFragment dialogFragment = ((BluetoothLeSensorPreference) preference).createInstance(); dialogFragment.setTargetFragment(this, 0); dialogFragment.show(getParentFragmentManager(), getClass().getSimpleName());