BLUETOOTH_CONNECT permission requested for Bluetooth trigger editor in Google Play version

This commit is contained in:
2025-11-10 23:51:13 +01:00
parent 07011b2053
commit 4c4a355ff5
6 changed files with 41 additions and 14 deletions

View File

@@ -73,6 +73,7 @@
<uses-permission android:name="android.hardware.sensor.proximity"/> <uses-permission android:name="android.hardware.sensor.proximity"/>
<uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission <uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS" android:name="android.permission.WRITE_SECURE_SETTINGS"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" />

View File

@@ -71,6 +71,7 @@
<uses-permission android:name="android.hardware.sensor.proximity"/> <uses-permission android:name="android.hardware.sensor.proximity"/>
<uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission <uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS" android:name="android.permission.WRITE_SECURE_SETTINGS"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" />

View File

@@ -67,6 +67,7 @@
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.hardware.sensor.proximity"/> <uses-permission android:name="android.hardware.sensor.proximity"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission <uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS" android:name="android.permission.WRITE_SECURE_SETTINGS"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" />

View File

@@ -1,8 +1,10 @@
package com.jens.automation2; package com.jens.automation2;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@@ -16,17 +18,20 @@ import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import com.jens.automation2.receivers.BluetoothReceiver; import com.jens.automation2.receivers.BluetoothReceiver;
public class ActivityManageTriggerBluetooth extends Activity public class ActivityManageTriggerBluetooth extends Activity
{ {
final static int requestPermissionCodeBluetoothConnect = 4711;
protected static Trigger editedBluetoothTrigger; protected static Trigger editedBluetoothTrigger;
RadioButton radioAnyBluetoothDevice, radioNoDevice, radioDeviceFromList, radioBluetoothConnected, radioBluetoothDisconnected, radioBluetoothInRange, radioBluetoothOutRange; RadioButton radioAnyBluetoothDevice, radioNoDevice, radioDeviceFromList, radioBluetoothConnected, radioBluetoothDisconnected, radioBluetoothInRange, radioBluetoothOutRange;
Button bSaveBluetoothTrigger; Button bSaveBluetoothTrigger;
Spinner spinnerBluetoothDevices; Spinner spinnerBluetoothDevices;
TextView tvBluetoothNotPresentNotice; TextView tvBluetoothNotPresentNotice;
ArrayAdapter<String> bluetoothDevicesSpinnerAdapter; ArrayAdapter<String> bluetoothDevicesSpinnerAdapter = null;
@Override @Override
protected void onCreate(Bundle savedInstanceState) protected void onCreate(Bundle savedInstanceState)
@@ -47,8 +52,6 @@ public class ActivityManageTriggerBluetooth extends Activity
spinnerBluetoothDevices = (Spinner)findViewById(R.id.spinnerBluetoothDevices); spinnerBluetoothDevices = (Spinner)findViewById(R.id.spinnerBluetoothDevices);
tvBluetoothNotPresentNotice = (TextView)findViewById(R.id.tvBluetoothNotPresentNotice); tvBluetoothNotPresentNotice = (TextView)findViewById(R.id.tvBluetoothNotPresentNotice);
bluetoothDevicesSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, BluetoothReceiver.getAllPairedBluetoothDevicesStrings());
if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH))
tvBluetoothNotPresentNotice.setVisibility(View.VISIBLE); tvBluetoothNotPresentNotice.setVisibility(View.VISIBLE);
else else
@@ -76,16 +79,36 @@ public class ActivityManageTriggerBluetooth extends Activity
} }
}); });
refreshBluetoothDeviceSpinner(); if(Miscellaneous.getTargetSDK(ActivityManageTriggerBluetooth.this) >= 31 && !ActivityPermissions.havePermission(Manifest.permission.BLUETOOTH_CONNECT, ActivityManageTriggerBluetooth.this))
spinnerBluetoothDevices.setEnabled(false); requestPermissions(new String[] {Manifest.permission.BLUETOOTH_CONNECT }, requestPermissionCodeBluetoothConnect);
else
refreshBluetoothDeviceSpinner();
spinnerBluetoothDevices.setEnabled(false);
if(editedBluetoothTrigger.getBluetoothDeviceAddress() != null && editedBluetoothTrigger.getBluetoothDeviceAddress().length() > 0) if(editedBluetoothTrigger.getBluetoothDeviceAddress() != null && editedBluetoothTrigger.getBluetoothDeviceAddress().length() > 0)
loadVariableIntoGui(); 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); Miscellaneous.logEvent("i", "Spinner", "Attempting to update spinnerBluetoothDevices", 4);
if(bluetoothDevicesSpinnerAdapter == null)
bluetoothDevicesSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, BluetoothReceiver.getAllPairedBluetoothDevicesStrings());
if(spinnerBluetoothDevices.getAdapter() == null) if(spinnerBluetoothDevices.getAdapter() == null)
{ {
spinnerBluetoothDevices.setAdapter(bluetoothDevicesSpinnerAdapter); spinnerBluetoothDevices.setAdapter(bluetoothDevicesSpinnerAdapter);

View File

@@ -149,17 +149,17 @@ public class ActivityManageTriggerProximity extends Activity
sbProximityTest.setProgress((int)sensorEvent.values[0]); sbProximityTest.setProgress((int)sensorEvent.values[0]);
tvProximityCurrentValue.setText((String.valueOf(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.. // here we are setting our status to our textview..
// if sensor event return 0 then object is closed // if sensor event return 0 then object is closed
// to sensor else object is away from sensor. // to sensor else object is away from sensor.
// sensorStatusTV.setText("Near"); // sensorStatusTV.setText("Near");
} // }
else // else
{ // {
// sensorStatusTV.setText("Away"); // sensorStatusTV.setText("Away");
} // }
} }
} }

View File

@@ -1,4 +1,5 @@
* Fixed: Crash in Play Store version when starting the service * Fixed: Crash in Play Store version when starting the service
* Fixed: trigger url result was not stored correctly in a variable * Fixed: trigger url result was not stored correctly in a variable
* Fixed: Crash when clicking +/- when creating/editing TimeFrame trigger * 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 * Added Possibility to select UI theme, hence enabling modern UI designs