mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-22 08:13:43 +02:00
check for Bluetooth connect and scan permissions for connecting >= Android 12
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.health.openscale.gui;
|
package com.health.openscale.gui;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothManager;
|
import android.bluetooth.BluetoothManager;
|
||||||
@@ -24,6 +25,7 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
@@ -75,6 +77,7 @@ import com.health.openscale.gui.measurement.MeasurementEntryFragment;
|
|||||||
import com.health.openscale.gui.preferences.BluetoothSettingsFragment;
|
import com.health.openscale.gui.preferences.BluetoothSettingsFragment;
|
||||||
import com.health.openscale.gui.preferences.UserSettingsFragment;
|
import com.health.openscale.gui.preferences.UserSettingsFragment;
|
||||||
import com.health.openscale.gui.slides.AppIntroActivity;
|
import com.health.openscale.gui.slides.AppIntroActivity;
|
||||||
|
import com.health.openscale.gui.utils.PermissionHelper;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -582,6 +585,12 @@ public class MainActivity extends AppCompatActivity
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.S) {
|
||||||
|
Timber.d("SDK >= 31 request for Bluetooth Scan and Bluetooth connect permissions");
|
||||||
|
requestPermissions(new String[]{Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT}, PermissionHelper.PERMISSIONS_REQUEST_ACCESS_BLUETOOTH);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Toast.makeText(getApplicationContext(), getResources().getString(R.string.info_bluetooth_try_connection) + " " + deviceName, Toast.LENGTH_SHORT).show();
|
Toast.makeText(getApplicationContext(), getResources().getString(R.string.info_bluetooth_try_connection) + " " + deviceName, Toast.LENGTH_SHORT).show();
|
||||||
setBluetoothStatusIcon(R.drawable.ic_bluetooth_searching);
|
setBluetoothStatusIcon(R.drawable.ic_bluetooth_searching);
|
||||||
|
|
||||||
@@ -877,6 +886,32 @@ public class MainActivity extends AppCompatActivity
|
|||||||
startActivity(Intent.createChooser(intent, getResources().getString(R.string.label_share)));
|
startActivity(Intent.createChooser(intent, getResources().getString(R.string.label_share)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||||
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
|
|
||||||
|
switch (requestCode) {
|
||||||
|
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_BLUETOOTH: {
|
||||||
|
boolean allGranted = true;
|
||||||
|
for (int result : grantResults) {
|
||||||
|
if (result != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
allGranted = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allGranted) {
|
||||||
|
Timber.d("All Bluetooth permissions granted");
|
||||||
|
invokeConnectToBluetoothDevice();
|
||||||
|
} else {
|
||||||
|
Timber.d("At least one Bluetooth permission was not granted");
|
||||||
|
Toast.makeText(this, R.string.permission_not_granted, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
|
@@ -83,7 +83,6 @@ public class PermissionHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean requestLocationPermission(final Fragment fragment, String[] requiredPermissions) {
|
private static boolean requestLocationPermission(final Fragment fragment, String[] requiredPermissions) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
if (requestLocationServicePermission(fragment)) {
|
if (requestLocationServicePermission(fragment)) {
|
||||||
if (fragment.getContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
if (fragment.getContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getActivity());
|
AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getActivity());
|
||||||
@@ -104,7 +103,6 @@ public class PermissionHelper {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -136,25 +134,21 @@ public class PermissionHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean requestReadPermission(final Fragment fragment) {
|
public static boolean requestReadPermission(final Fragment fragment) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
if (fragment.getContext().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
if (fragment.getContext().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||||
fragment.requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_READ_STORAGE);
|
fragment.requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_READ_STORAGE);
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean requestWritePermission(final Fragment fragment) {
|
public static boolean requestWritePermission(final Fragment fragment) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
if (fragment.getContext().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
if (fragment.getContext().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||||
fragment.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE);
|
fragment.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE);
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user