From 44780061093d7c08544768589b06ead44cd63d00 Mon Sep 17 00:00:00 2001 From: jens Date: Sat, 6 Dec 2025 17:59:22 +0100 Subject: [PATCH] Permission check for ability to schedule exact timers --- .../jens/automation2/ActivityPermissions.java | 22 +++++++++++++++---- .../metadata/android/en-US/changelogs/145.txt | 1 + 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/jens/automation2/ActivityPermissions.java b/app/src/main/java/com/jens/automation2/ActivityPermissions.java index bf36127..3e565a1 100644 --- a/app/src/main/java/com/jens/automation2/ActivityPermissions.java +++ b/app/src/main/java/com/jens/automation2/ActivityPermissions.java @@ -2,6 +2,7 @@ package com.jens.automation2; import android.Manifest; import android.app.Activity; +import android.app.AlarmManager; import android.app.AlertDialog; import android.app.NotificationManager; import android.app.admin.DevicePolicyManager; @@ -27,6 +28,8 @@ import android.view.View; import android.widget.Button; import android.widget.TextView; +import androidx.core.content.ContextCompat; + import com.jens.automation2.receivers.NotificationListener; import java.util.ArrayList; @@ -316,9 +319,20 @@ public class ActivityPermissions extends Activity { return haveAccessibilityAccess(Miscellaneous.getAnyContext()); } + else if(s.equals(Manifest.permission.SCHEDULE_EXACT_ALARM) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) + { + /* + It appears like as long as targetSdk has not been raised, this check + will return true even if the slider in the settings for that + permission is not enabled. + */ + AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + return alarmManager.canScheduleExactAlarms(); + } else { - int res = context.checkCallingOrSelfPermission(s); + // int res = context.checkCallingOrSelfPermission(s); + int res = ContextCompat.checkSelfPermission(context, s); return (res == PackageManager.PERMISSION_GRANTED); } } @@ -573,8 +587,8 @@ public class ActivityPermissions extends Activity break; case timeFrame: if(Build.VERSION.SDK_INT >= 31 && Miscellaneous.getTargetSDK(Miscellaneous.getAnyContext()) >= 31 -// || -// Build.VERSION.SDK_INT >= 33 + || + Build.VERSION.SDK_INT >= 34 //https://developer.android.com/about/versions/14/changes/schedule-exact-alarms ) addToArrayListUnique(Manifest.permission.SCHEDULE_EXACT_ALARM, requiredPermissions); break; @@ -1040,7 +1054,7 @@ public class ActivityPermissions extends Activity required permissions have been granted. */ - super.onActivityResult(requestCode, resultCode, data); +// super.onActivityResult(requestCode, resultCode, data); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { diff --git a/fastlane/metadata/android/en-US/changelogs/145.txt b/fastlane/metadata/android/en-US/changelogs/145.txt index 4d925b9..ce8a75b 100644 --- a/fastlane/metadata/android/en-US/changelogs/145.txt +++ b/fastlane/metadata/android/en-US/changelogs/145.txt @@ -5,4 +5,5 @@ * Fixed: Permission BLUETOOTH_CONNECT requested for Bluetooth trigger editor in Google Play version * Fixed: Airplane mode trigger didn't work if no locations where defined. * Fixed: Vibrate action didn't work on some devices +* Fixed: Permission check for ability to schedule exact timers * Added Possibility to select UI theme, hence enabling modern UI designs \ No newline at end of file