Skip to content

Commit

Permalink
Handle alarm permission request
Browse files Browse the repository at this point in the history
  • Loading branch information
jhabr committed Feb 2, 2024
1 parent 45fc753 commit 096408c
Showing 1 changed file with 27 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package ch.freshbits.pathshare.example

import android.app.AlarmManager
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import android.view.View
import android.widget.Button
Expand Down Expand Up @@ -146,10 +150,11 @@ class MainActivity : AppCompatActivity() {
private fun joinSession() {
if (session.isExpired) return

if (hasLocationPermission()) {
if (hasLocationPermission() && hasAlarmPermission()) {
performJoinSession()
} else {
requestLocationPermission()
if (!hasLocationPermission()) { requestLocationPermission() }
if (!hasAlarmPermission()) { requestAlarmPermission() }
}
}

Expand Down Expand Up @@ -222,6 +227,26 @@ class MainActivity : AppCompatActivity() {
return PermissionRequester.hasPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
}

private fun requestAlarmPermission() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
return
}
val intent = Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
startActivity(intent)
}

private fun hasAlarmPermission(): Boolean {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.S || getAlarmManager().canScheduleExactAlarms()
}

private fun getAlarmManager(): AlarmManager {
return getContext().getSystemService(ALARM_SERVICE) as AlarmManager
}

private fun getContext(): Context {
return Pathshare.client().context
}

private fun saveSessionIdentifier() {
val editor = preferences().edit()
editor.putString(SESSION_ID_KEY, session.identifier)
Expand Down

0 comments on commit 096408c

Please sign in to comment.