Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alarmmanager canScheduleExactAlarms #368

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

mastermichi
Copy link
Contributor

@mastermichi mastermichi commented Mar 4, 2023

Check if the permission "SCHEDULE_EXACT_ALARM" was granted on api >= 31
On Android 12 the permission is automatically granted by the system, but can be revoked by the system or user anytime.
On Android 13 we need to check if the user has granted this permission.

https://developer.android.com/training/scheduling/alarms#using-schedule-exact-permission

java.lang.RuntimeException: Unable to pause activity {com.firebirdberlin.nightdream/com.firebirdberlin.nightdream.NightDreamActivity}: java.lang.SecurityException: Caller com.firebirdberlin.nightdream needs to hold android.permission.SCHEDULE_EXACT_ALARM or android.permission.USE_EXACT_ALARM to set exact alarms.
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5704)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5655)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6438)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6342)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:65)
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:6427)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2581)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8741)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.lang.SecurityException: Caller com.firebirdberlin.nightdream needs to hold android.permission.SCHEDULE_EXACT_ALARM or android.permission.USE_EXACT_ALARM to set exact alarms.
at android.os.Parcel.createExceptionOrNull(Parcel.java:3023)
at android.os.Parcel.createException(Parcel.java:3007)
at android.os.Parcel.readException(Parcel.java:2990)
at android.os.Parcel.readException(Parcel.java:2932)
at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:346)
at android.app.AlarmManager.setImpl(AlarmManager.java:1000)
at android.app.AlarmManager.setImpl(AlarmManager.java:960)
at android.app.AlarmManager.setExact(AlarmManager.java:758)
at com.firebirdberlin.nightdream.receivers.ScheduledAutoStartReceiver.schedule(ScheduledAutoStartReceiver.java:94)
at com.firebirdberlin.nightdream.NightDreamActivity.onPause(NightDreamActivity.java:637)
at android.app.Activity.performPause(Activity.java:8765)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1585)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5694)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5655) 
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:6438) 
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6342) 
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71) 
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:65) 
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:6427) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2581) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loopOnce(Looper.java:226) 
at android.os.Looper.loop(Looper.java:313) 
at android.app.ActivityThread.main(ActivityThread.java:8741) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) 
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.alarm.AlarmManagerService$5.set(AlarmManagerService.java:3393)
at android.app.IAlarmManager$Stub.onTransact(IAlarmManager.java:199)
at android.os.Binder.execTransactInternal(Binder.java:1316)
at android.os.Binder.execTransact(Binder.java:1280)

java.lang.SecurityException: Caller com.firebirdberlin.nightdream needs to hold android.permission.SCHEDULE_EXACT_ALARM or android.permission.USE_EXACT_ALARM to set exact alarms.
at android.os.Parcel.createExceptionOrNull(Parcel.java:3023)
at android.os.Parcel.createException(Parcel.java:3007)
at android.os.Parcel.readException(Parcel.java:2990)
at android.os.Parcel.readException(Parcel.java:2932)
at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:346)
at android.app.AlarmManager.setImpl(AlarmManager.java:1000)
at android.app.AlarmManager.setImpl(AlarmManager.java:960)
at android.app.AlarmManager.setAlarmClock(AlarmManager.java:861)
at com.firebirdberlin.nightdream.receivers.WakeUpReceiver.setAlarm(WakeUpReceiver.java:139)
at com.firebirdberlin.nightdream.receivers.WakeUpReceiver.schedule(WakeUpReceiver.java:50)
at com.firebirdberlin.nightdream.services.SqliteIntentService.scheduleAlarm(SqliteIntentService.java:77)
at com.firebirdberlin.nightdream.NightDreamActivity.onWindowFocusChanged(NightDreamActivity.java:514)
at androidx.appcompat.view.WindowCallbackWrapper.onWindowFocusChanged(WindowCallbackWrapper.java:124)
at com.android.internal.policy.DecorView.onWindowFocusChanged(DecorView.java:2686)
at android.view.View.dispatchWindowFocusChanged(View.java:15806)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1512)
at android.view.ViewRootImpl.handleWindowFocusChanged(ViewRootImpl.java:4548)
at android.view.ViewRootImpl.-$$Nest$mhandleWindowFocusChanged(Unknown Source:0)
at android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl(ViewRootImpl.java:6582)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:6491)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8741)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.alarm.AlarmManagerService$5.set(AlarmManagerService.java:3393)
at android.app.IAlarmManager$Stub.onTransact(IAlarmManager.java:199)
at android.os.Binder.execTransactInternal(Binder.java:1316)
at android.os.Binder.execTransact(Binder.java:1280)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant