Skip to content

Commit de9bf19

Browse files
committed
Remove USE_EXACT_ALARM permission.
It's only available to Clock and Calendar apps.
1 parent ec70f71 commit de9bf19

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
99
<uses-permission android:name="android.permission.WAKE_LOCK" />
1010
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
11-
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />
1211

1312
<uses-feature
1413
android:name="android.hardware.faketouch"

app/src/main/kotlin/org/fossify/notes/activities/SettingsActivity.kt

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.fossify.notes.activities
22

3+
import android.app.AlarmManager
34
import android.content.Intent
45
import android.net.Uri
56
import android.os.Bundle
@@ -11,11 +12,13 @@ import kotlinx.serialization.SerializationException
1112
import kotlinx.serialization.encodeToString
1213
import kotlinx.serialization.json.Json
1314
import org.fossify.commons.dialogs.ConfirmationDialog
15+
import org.fossify.commons.dialogs.PermissionRequiredDialog
1416
import org.fossify.commons.dialogs.RadioGroupDialog
1517
import org.fossify.commons.dialogs.SecurityDialog
1618
import org.fossify.commons.extensions.*
1719
import org.fossify.commons.helpers.*
1820
import org.fossify.commons.models.RadioItem
21+
import org.fossify.notes.BuildConfig
1922
import org.fossify.notes.R
2023
import org.fossify.notes.databinding.ActivitySettingsBinding
2124
import org.fossify.notes.dialogs.ExportNotesDialog
@@ -368,13 +371,15 @@ class SettingsActivity : SimpleActivity() {
368371
binding.settingsEnableAutomaticBackupsHolder.setOnClickListener {
369372
val wasBackupDisabled = !config.autoBackup
370373
if (wasBackupDisabled) {
371-
ManageAutoBackupsDialog(
372-
activity = this,
373-
onSuccess = {
374-
enableOrDisableAutomaticBackups(true)
375-
scheduleNextAutomaticBackup()
376-
}
377-
)
374+
maybeRequestExactAlarmPermission {
375+
ManageAutoBackupsDialog(
376+
activity = this,
377+
onSuccess = {
378+
enableOrDisableAutomaticBackups(true)
379+
scheduleNextAutomaticBackup()
380+
}
381+
)
382+
}
378383
} else {
379384
cancelScheduledAutomaticBackup()
380385
enableOrDisableAutomaticBackups(false)
@@ -400,6 +405,25 @@ class SettingsActivity : SimpleActivity() {
400405
binding.settingsManageAutomaticBackupsHolder.beVisibleIf(enable)
401406
}
402407

408+
private fun maybeRequestExactAlarmPermission(callback: () -> Unit = {}) {
409+
if (isSPlus()) {
410+
val alarmManager: AlarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
411+
if (alarmManager.canScheduleExactAlarms()) {
412+
callback()
413+
} else {
414+
PermissionRequiredDialog(
415+
activity = this,
416+
textId = R.string.allow_alarm_automatic_backups,
417+
positiveActionCallback = {
418+
openRequestExactAlarmSettings(BuildConfig.APPLICATION_ID)
419+
},
420+
)
421+
}
422+
} else {
423+
callback()
424+
}
425+
}
426+
403427
private fun setupAppPasswordProtection() {
404428
binding.settingsAppPasswordProtection.isChecked = config.isAppPasswordProtectionOn
405429
binding.settingsAppPasswordProtectionHolder.setOnClickListener {

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<string name="new_text_note">New text note</string>
3030
<string name="new_checklist">New checklist</string>
3131
<string name="cannot_load_over_internet">The app cannot load files over the internet</string>
32+
<string name="allow_alarm_automatic_backups">To backup notes automatically, please grant the app permission to schedule exact alarms.</string>
3233

3334
<!-- File notes -->
3435
<string name="open_file">Open file</string>

0 commit comments

Comments
 (0)