From b85fd08f2853beb3776045cc262c762f8d8fc03f Mon Sep 17 00:00:00 2001 From: oliexdev Date: Sun, 7 Nov 2021 11:10:43 +0100 Subject: [PATCH] added some debug information for the permission handling --- .../BluetoothSettingsFragment.java | 10 ++--- .../openscale/gui/utils/PermissionHelper.java | 44 ++++++++++++------- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/gui/preferences/BluetoothSettingsFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/preferences/BluetoothSettingsFragment.java index 87fc8805..adc5c2df 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/preferences/BluetoothSettingsFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/preferences/BluetoothSettingsFragment.java @@ -100,9 +100,7 @@ public class BluetoothSettingsFragment extends Fragment { @Override public void onResume() { if (PermissionHelper.requestBluetoothPermission(this)) { - if (PermissionHelper.requestLocationServicePermission(this)) { - startBluetoothDiscovery(); - } + startBluetoothDiscovery(); } super.onResume(); } @@ -401,10 +399,10 @@ public class BluetoothSettingsFragment extends Fragment { } if (allGranted) { - if (PermissionHelper.requestLocationServicePermission(this)) { - startBluetoothDiscovery(); - } + Timber.d("All Bluetooth permissions granted"); + startBluetoothDiscovery(); } else { + Timber.d("At least one Bluetooth permission was not granted"); Toast.makeText(requireContext(), R.string.permission_not_granted, Toast.LENGTH_SHORT).show(); } break; diff --git a/android_app/app/src/main/java/com/health/openscale/gui/utils/PermissionHelper.java b/android_app/app/src/main/java/com/health/openscale/gui/utils/PermissionHelper.java index 69b4ab7c..61be3729 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/utils/PermissionHelper.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/utils/PermissionHelper.java @@ -35,6 +35,8 @@ import androidx.fragment.app.Fragment; import com.health.openscale.R; +import timber.log.Timber; + public class PermissionHelper { public final static int PERMISSIONS_REQUEST_ACCESS_BLUETOOTH = 1; public final static int PERMISSIONS_REQUEST_ACCESS_READ_STORAGE = 2; @@ -67,43 +69,51 @@ public class PermissionHelper { String[] requiredPermissions; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && targetSdkVersion >= Build.VERSION_CODES.S) { + Timber.d("SDK >= 31 request for Bluetooth Scan and Bluetooth connect permissions"); requiredPermissions = new String[]{Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT}; fragment.requestPermissions(requiredPermissions, PERMISSIONS_REQUEST_ACCESS_BLUETOOTH); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && targetSdkVersion >= Build.VERSION_CODES.Q) { + Timber.d("SDK >= 29 request for Access fine location permission"); return requestLocationPermission(fragment, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}); - } else return requestLocationPermission(fragment, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}); + } else { + Timber.d("SDK < 29 request for coarse location permission"); + return requestLocationPermission(fragment, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}); + } return true; } private static boolean requestLocationPermission(final Fragment fragment, String[] requiredPermissions) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (fragment.getContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getActivity()); + if (requestLocationServicePermission(fragment)) { + if (fragment.getContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getActivity()); - builder.setMessage(R.string.permission_bluetooth_info) - .setTitle(R.string.permission_bluetooth_info_title) - .setIcon(R.drawable.ic_preferences_about) - .setPositiveButton(R.string.label_ok, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.dismiss(); - fragment.requestPermissions(requiredPermissions, PERMISSIONS_REQUEST_ACCESS_BLUETOOTH); - } - }); + builder.setMessage(R.string.permission_bluetooth_info) + .setTitle(R.string.permission_bluetooth_info_title) + .setIcon(R.drawable.ic_preferences_about) + .setPositiveButton(R.string.label_ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + dialog.dismiss(); + fragment.requestPermissions(requiredPermissions, PERMISSIONS_REQUEST_ACCESS_BLUETOOTH); + } + }); - Dialog alertDialog = builder.create(); - alertDialog.setCanceledOnTouchOutside(false); - alertDialog.show(); - return false; + Dialog alertDialog = builder.create(); + alertDialog.setCanceledOnTouchOutside(false); + alertDialog.show(); + return false; + } } } return true; } - public static boolean requestLocationServicePermission(final Fragment fragment) { + private static boolean requestLocationServicePermission(final Fragment fragment) { LocationManager locationManager = (LocationManager) fragment.getActivity().getSystemService(LOCATION_SERVICE); if (!(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) || locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))) { + Timber.d("No GPS or Network location service is enabled, ask user for permission"); AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getContext()); builder.setTitle(R.string.permission_bluetooth_info_title);