Skip to content

Commit 096408c

Browse files
committed
Handle alarm permission request
1 parent 45fc753 commit 096408c

File tree

1 file changed

+27
-2
lines changed
  • android-example-app/app-kotlin/src/main/java/ch/freshbits/pathshare/example

1 file changed

+27
-2
lines changed

android-example-app/app-kotlin/src/main/java/ch/freshbits/pathshare/example/MainActivity.kt

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package ch.freshbits.pathshare.example
22

3+
import android.app.AlarmManager
34
import android.content.Context
5+
import android.content.Intent
46
import android.content.SharedPreferences
7+
import android.os.Build
58
import android.os.Bundle
9+
import android.provider.Settings
610
import android.util.Log
711
import android.view.View
812
import android.widget.Button
@@ -146,10 +150,11 @@ class MainActivity : AppCompatActivity() {
146150
private fun joinSession() {
147151
if (session.isExpired) return
148152

149-
if (hasLocationPermission()) {
153+
if (hasLocationPermission() && hasAlarmPermission()) {
150154
performJoinSession()
151155
} else {
152-
requestLocationPermission()
156+
if (!hasLocationPermission()) { requestLocationPermission() }
157+
if (!hasAlarmPermission()) { requestAlarmPermission() }
153158
}
154159
}
155160

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

230+
private fun requestAlarmPermission() {
231+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
232+
return
233+
}
234+
val intent = Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
235+
startActivity(intent)
236+
}
237+
238+
private fun hasAlarmPermission(): Boolean {
239+
return Build.VERSION.SDK_INT < Build.VERSION_CODES.S || getAlarmManager().canScheduleExactAlarms()
240+
}
241+
242+
private fun getAlarmManager(): AlarmManager {
243+
return getContext().getSystemService(ALARM_SERVICE) as AlarmManager
244+
}
245+
246+
private fun getContext(): Context {
247+
return Pathshare.client().context
248+
}
249+
225250
private fun saveSessionIdentifier() {
226251
val editor = preferences().edit()
227252
editor.putString(SESSION_ID_KEY, session.identifier)

0 commit comments

Comments
 (0)