From 4c4a355ff56293b75f65f27a72051b11ea49d150 Mon Sep 17 00:00:00 2001 From: Jens Date: Mon, 10 Nov 2025 23:51:13 +0100 Subject: [PATCH] BLUETOOTH_CONNECT permission requested for Bluetooth trigger editor in Google Play version --- app/src/apkFlavor/AndroidManifest.xml | 1 + app/src/fdroidFlavor/AndroidManifest.xml | 1 + app/src/googlePlayFlavor/AndroidManifest.xml | 1 + .../ActivityManageTriggerBluetooth.java | 39 +++++++++++++++---- .../ActivityManageTriggerProximity.java | 12 +++--- .../metadata/android/en-US/changelogs/145.txt | 1 + 6 files changed, 41 insertions(+), 14 deletions(-) diff --git a/app/src/apkFlavor/AndroidManifest.xml b/app/src/apkFlavor/AndroidManifest.xml index 1cc2eee..dbcb92f 100644 --- a/app/src/apkFlavor/AndroidManifest.xml +++ b/app/src/apkFlavor/AndroidManifest.xml @@ -73,6 +73,7 @@ + diff --git a/app/src/fdroidFlavor/AndroidManifest.xml b/app/src/fdroidFlavor/AndroidManifest.xml index 0ff6096..4e589db 100644 --- a/app/src/fdroidFlavor/AndroidManifest.xml +++ b/app/src/fdroidFlavor/AndroidManifest.xml @@ -71,6 +71,7 @@ + diff --git a/app/src/googlePlayFlavor/AndroidManifest.xml b/app/src/googlePlayFlavor/AndroidManifest.xml index efc0c7a..e3ac22c 100644 --- a/app/src/googlePlayFlavor/AndroidManifest.xml +++ b/app/src/googlePlayFlavor/AndroidManifest.xml @@ -67,6 +67,7 @@ + diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java index 973c0b4..01b2d29 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java @@ -1,8 +1,10 @@ package com.jens.automation2; +import android.Manifest; import android.app.Activity; import android.bluetooth.BluetoothDevice; import android.content.pm.PackageManager; +import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -16,17 +18,20 @@ import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; + import com.jens.automation2.receivers.BluetoothReceiver; public class ActivityManageTriggerBluetooth extends Activity { + final static int requestPermissionCodeBluetoothConnect = 4711; protected static Trigger editedBluetoothTrigger; RadioButton radioAnyBluetoothDevice, radioNoDevice, radioDeviceFromList, radioBluetoothConnected, radioBluetoothDisconnected, radioBluetoothInRange, radioBluetoothOutRange; Button bSaveBluetoothTrigger; Spinner spinnerBluetoothDevices; TextView tvBluetoothNotPresentNotice; - ArrayAdapter bluetoothDevicesSpinnerAdapter; + ArrayAdapter bluetoothDevicesSpinnerAdapter = null; @Override protected void onCreate(Bundle savedInstanceState) @@ -46,8 +51,6 @@ public class ActivityManageTriggerBluetooth extends Activity bSaveBluetoothTrigger = (Button)findViewById(R.id.bSaveBluetoothTrigger); spinnerBluetoothDevices = (Spinner)findViewById(R.id.spinnerBluetoothDevices); tvBluetoothNotPresentNotice = (TextView)findViewById(R.id.tvBluetoothNotPresentNotice); - - bluetoothDevicesSpinnerAdapter = new ArrayAdapter(this, R.layout.text_view_for_poi_listview_mediumtextsize, BluetoothReceiver.getAllPairedBluetoothDevicesStrings()); if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) tvBluetoothNotPresentNotice.setVisibility(View.VISIBLE); @@ -75,17 +78,37 @@ public class ActivityManageTriggerBluetooth extends Activity } } }); - - refreshBluetoothDeviceSpinner(); - spinnerBluetoothDevices.setEnabled(false); + + if(Miscellaneous.getTargetSDK(ActivityManageTriggerBluetooth.this) >= 31 && !ActivityPermissions.havePermission(Manifest.permission.BLUETOOTH_CONNECT, ActivityManageTriggerBluetooth.this)) + requestPermissions(new String[] {Manifest.permission.BLUETOOTH_CONNECT }, requestPermissionCodeBluetoothConnect); + else + refreshBluetoothDeviceSpinner(); + + spinnerBluetoothDevices.setEnabled(false); if(editedBluetoothTrigger.getBluetoothDeviceAddress() != null && editedBluetoothTrigger.getBluetoothDeviceAddress().length() > 0) loadVariableIntoGui(); } - - protected void refreshBluetoothDeviceSpinner() + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) + { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + if(requestCode == requestPermissionCodeBluetoothConnect) + { + if(permissions[0].equals(Manifest.permission.BLUETOOTH_CONNECT) && grantResults[0] == PackageManager.PERMISSION_GRANTED) + refreshBluetoothDeviceSpinner(); + } + } + + protected void refreshBluetoothDeviceSpinner() { Miscellaneous.logEvent("i", "Spinner", "Attempting to update spinnerBluetoothDevices", 4); + + if(bluetoothDevicesSpinnerAdapter == null) + bluetoothDevicesSpinnerAdapter = new ArrayAdapter(this, R.layout.text_view_for_poi_listview_mediumtextsize, BluetoothReceiver.getAllPairedBluetoothDevicesStrings()); + if(spinnerBluetoothDevices.getAdapter() == null) { spinnerBluetoothDevices.setAdapter(bluetoothDevicesSpinnerAdapter); diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java index 2c6fd73..2c2e657 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerProximity.java @@ -149,17 +149,17 @@ public class ActivityManageTriggerProximity extends Activity sbProximityTest.setProgress((int)sensorEvent.values[0]); tvProximityCurrentValue.setText((String.valueOf(sensorEvent.values[0]))); - if (sensorEvent.values[0] == 0) - { +// if (sensorEvent.values[0] == 0) +// { // here we are setting our status to our textview.. // if sensor event return 0 then object is closed // to sensor else object is away from sensor. // sensorStatusTV.setText("Near"); - } - else - { +// } +// else +// { // sensorStatusTV.setText("Away"); - } +// } } } diff --git a/fastlane/metadata/android/en-US/changelogs/145.txt b/fastlane/metadata/android/en-US/changelogs/145.txt index 386a25d..1932c23 100644 --- a/fastlane/metadata/android/en-US/changelogs/145.txt +++ b/fastlane/metadata/android/en-US/changelogs/145.txt @@ -1,4 +1,5 @@ * Fixed: Crash in Play Store version when starting the service * Fixed: trigger url result was not stored correctly in a variable * Fixed: Crash when clicking +/- when creating/editing TimeFrame trigger +* Fixed: Permission BLUETOOTH_CONNECT requested for Bluetooth trigger editor in Google Play version * Added Possibility to select UI theme, hence enabling modern UI designs \ No newline at end of file