Hi,
I have an alarm/event type of app that successfully fires the service exactly on time every time but it is using the StartServiceExactAt with all the relevent user permissions and manifest entry etc. I read that we should now be using receiver modules instead to perform this task. I have converted the service into a receiver module and call it with StartReceiverAt method but it doesn't trigger on-time if at all.
I suspect that the permission is different for services and receivers??
In this code below, what permission do I ask the user for if using receivers not services?
This line in particular: in.Initialize("android.settings.REQUEST_SCHEDULE_EXACT_ALARM", "package:" & Application.PackageName)
Kind regards,
Azhar
I have an alarm/event type of app that successfully fires the service exactly on time every time but it is using the StartServiceExactAt with all the relevent user permissions and manifest entry etc. I read that we should now be using receiver modules instead to perform this task. I have converted the service into a receiver module and call it with StartReceiverAt method but it doesn't trigger on-time if at all.
I suspect that the permission is different for services and receivers??
In this code below, what permission do I ask the user for if using receivers not services?
Service Alarm converted to Receiver:
Sub configureNextService(notifyFor As String, inTime As Double)
Dim eventAlarmTime As Long
eventAlarmTime = getTimeInTicks(inTime)
Wait For (GetScheduleExactAlarmPermission) Complete (HasPermission As Boolean)
If HasPermission Then
Log("Permission Granted for Alarm")
' StartServiceAtExact(alarmCallService, eventAlarmTime,True)
StartReceiverAt(alarmCallReceiver, eventAlarmTime, True)
StartReceiver(widgetReceiverModule)
Log("Set Alarm Receiver for " & notifyFor & " at " & inTime & " as ticks..." & eventAlarmTime)
comCode.writeToLog("Starter> set next alarm receiver for " & inTime & " on " & comCode.makeTimeDateStamp)
gblStrNextDongTime = NumberFormat2(inTime,2,2,2,False)
Else
Log("no SCHEDULE_EXACT_ALARM permission")
End If
Actual Permission Request (for Service Alarm):
Private Sub GetScheduleExactAlarmPermission As ResumableSub
Dim p As Phone
If p.SdkVersion >= 31 Then
Dim am As JavaObject = GetAlarmManager
If am.RunMethod("canScheduleExactAlarms", Null).As(Boolean) = False Then
Dim in As Intent
in.Initialize("android.settings.[B]REQUEST_SCHEDULE_EXACT_ALARM[/B]", "package:" & Application.PackageName)
StartActivityForResult(in)
Wait For ion_Event (MethodName As String, Args() As Object)
Return -1 = Args(0)
End If
End If
Return True
End Sub
This line in particular: in.Initialize("android.settings.REQUEST_SCHEDULE_EXACT_ALARM", "package:" & Application.PackageName)
Kind regards,
Azhar