diff --git a/android/src/main/java/com/timesafari/dailynotification/DailyNotificationPlugin.kt b/android/src/main/java/com/timesafari/dailynotification/DailyNotificationPlugin.kt index b086254..ab45518 100644 --- a/android/src/main/java/com/timesafari/dailynotification/DailyNotificationPlugin.kt +++ b/android/src/main/java/com/timesafari/dailynotification/DailyNotificationPlugin.kt @@ -1055,51 +1055,14 @@ open class DailyNotificationPlugin : Plugin() { return call.reject("Context not available") } - // Check if exact alarms can be scheduled + // Do not open Settings or reject when exact alarms are not granted. + // Proceed with scheduling; underlying layer uses inexact/windowed alarms when exact is unavailable. + // Apps that want to prompt for exact alarm can use openExactAlarmSettings() or requestExactAlarmPermission(). if (!canScheduleExactAlarms(context)) { - // Permission not granted - request it - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && canRequestExactAlarmPermission(context)) { - // Open Settings to let user grant permission - try { - val intent = Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM).apply { - data = android.net.Uri.parse("package:${context.packageName}") - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - } - context.startActivity(intent) - Log.w(TAG, "Exact alarm permission required. Opened Settings for user to grant permission.") - call.reject( - "Exact alarm permission required. Please grant 'Alarms & reminders' permission in Settings, then try again.", - "EXACT_ALARM_PERMISSION_REQUIRED" - ) - return - } catch (e: Exception) { - Log.e(TAG, "Failed to open exact alarm settings", e) - call.reject("Failed to open exact alarm settings: ${e.message}") - return - } - } else { - // Permission permanently denied - direct to app settings - try { - val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { - data = android.net.Uri.parse("package:${context.packageName}") - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - } - context.startActivity(intent) - Log.w(TAG, "Exact alarm permission denied. Directing user to app settings.") - call.reject( - "Exact alarm permission denied. Please enable 'Alarms & reminders' in app settings.", - "PERMISSION_DENIED" - ) - return - } catch (e: Exception) { - Log.e(TAG, "Failed to open app settings", e) - call.reject("Failed to open app settings: ${e.message}") - return - } - } + Log.i(TAG, "Exact alarm permission not granted; scheduling will use inexact/windowed fallback.") } - // Permission granted - proceed with exact alarm scheduling + // Proceed with scheduling (exact when granted, otherwise inexact/windowed) // Capacitor passes the object directly via call.data val options = call.data ?: return call.reject("Options are required")