Status Update
Comments
[Deleted User] <[Deleted User]> #2
If you are using location, you should be using the permissions API to ensure that you have the permissions you need to track background location before any attempts to use APIs that require that permission.
SystemForegroundService
just provides a convenient entry point for the ListenableWorker
. If you require additional permissions, its the app's responsibility to ask for permissions and check that those permissions are granted.
ja...@google.com <ja...@google.com>
ja...@google.com <ja...@google.com> #3
We are performing location checks before submitting the WorkManager job. However, the problem exists if the location permission is removed by the User after the job has been submitted. The OS is force killing the app (when the location permission is removed), and the OS is trying to restart the SystemForegroundService which then crashes our app immediately on launch. We are not interacting with the WorkManager in this scenario other than initialising it which is necessary on app start, e.g.
val workManagerConfig = Configuration.Builder()
.setWorkerFactory(entryPoints.getWorkerFactory())
.build()
// Initialize WorkManager with the custom configuration.
WorkManager.initialize(context, workManagerConfig)
return WorkManager.getInstance(context)
te...@surplace.co <te...@surplace.co> #4
I think it might be best for now if your foreground worker does not declare that it is a location foreground service and instead it is either a 'short' service or a 'special use' service such that WorkManager's SystemForegroundService
redeliver intent restarts your foreground worker and in it you can check for location permission and then start a real foreground location service.
Meanwhile we have to adapt WorkManager's SystemForegroundService
to Android 14 requirements to have a foreground service type along with its permission runtime check as otherwise many of the types have runtime permissions pre-requisites.
an...@gmail.com <an...@gmail.com> #5
Sorry, I just re-read the changes for Android 14, and for this to work elegantly, we will need to change the implementation of SystemForegroundService
to do the right thing.
Will try to land this in the next WorkManager release.
ma...@modjo.ai <ma...@modjo.ai> #6
mo...@college-montreal.qc.ca <mo...@college-montreal.qc.ca> #7
[Deleted User] <[Deleted User]> #8
lu...@googlemail.com <lu...@googlemail.com> #9
Hey - We are working on a fix that will prevent WorkManager from crashing when the foreground worker is restarted due to permission loss. Be aware though that WorkManager won't be able to set the app in a foreground state and it is expected for the worker to self check the required permissions and to probably return a Result.failure()
from the work override.
st...@amplixs.com <st...@amplixs.com> #10
Branch: androidx-main
commit 4616a739983e6316819dc515057677edf40a41c1
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Jul 24 08:59:34 2024
Catch SecurityException in startForeground
In API 34, startForeground() will throw SecurityException if the service type prerequisites are not met. WorkManager won't be able to start the foreground service but the worker is likely to continue and ideally fail once it checks the permission needed to do the actual work. The worker will also be subject to JobScheduler limitations.
This change mitigates the crashing issue of a foreground worker running and the app losing the prerequisite permission, causing the app to restart and due to SystemForegroundService being sticky, it restarting too but failing at startForeground() due to missing permissions.
Bug: 333957914
Test: Manual
Change-Id: I96607f62fdd456290163ee6f2774f9d31c64e79e
M work/work-runtime/src/main/java/androidx/work/impl/foreground/SystemForegroundService.java
vi...@gmail.com <vi...@gmail.com> #11
Branch: androidx-main
commit c540fa0564df85fa4e3cfd2d98f532f4120e12d8
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Jul 24 09:48:38 2024
Add foreground worker with location
Updates WorkManager integration app to validate Android 14 foreground service type requirements, including the addition for a foreground worker who uses location APIs.
Bug: 333957914
Test: n/a
Change-Id: I9ac76d029ab0f0e4d1256145bdc2e3cb20b27c36
M work/integration-tests/testapp/lint-baseline.xml
M work/integration-tests/testapp/src/main/AndroidManifest.xml
A work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/ForegroundLocationWorker.kt
M work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/ForegroundWorker.kt
M work/integration-tests/testapp/src/main/java/androidx/work/integration/testapp/MainActivity.kt
M work/integration-tests/testapp/src/main/res/layout/activity_main.xml
M work/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
le...@gmail.com <le...@gmail.com> #12
<[ https://android-review.googlesource.com/3190158 :// = > https://android-X-review.android-X-source. com/3190158 and I didn't get my addresses I need <[ Android-X-Developer.com ]> <[Android-X-GloblaleWaybandTelcomPrivateGovSecurityServices.com ] [ Android-X-GlobaleEcosystemEnterprise ]
:// I need everything of this to be Android-X Object script because they are trying to say it's their's and they can't even run it and I need it back ]>
fm...@gmail.com <fm...@gmail.com> #13
vl...@indriver.com <vl...@indriver.com> #14
ch...@bonfyreapp.com <ch...@bonfyreapp.com> #15
ot...@gmail.com <ot...@gmail.com> #16
[Deleted User] <[Deleted User]> #17
fi...@gmail.com <fi...@gmail.com> #18
ja...@gmail.com <ja...@gmail.com> #19
an...@andamp.io <an...@andamp.io> #20
[Deleted User] <[Deleted User]> #21
sm...@gmail.com <sm...@gmail.com> #22
sn...@spotify.com <sn...@spotify.com> #23
fl...@sanmina.com <fl...@sanmina.com> #24
jo...@gmail.com <jo...@gmail.com> #25
di...@gmail.com <di...@gmail.com> #26
eu...@gmail.com <eu...@gmail.com> #27
ce...@gmail.com <ce...@gmail.com> #28
[Deleted User] <[Deleted User]> #29
a....@informatica.aci.it <a....@informatica.aci.it> #30
sa...@zuid.com <sa...@zuid.com> #31
ja...@gmail.com <ja...@gmail.com> #32
va...@gmail.com <va...@gmail.com> #33
se...@gmail.com <se...@gmail.com> #34
an...@gmail.com <an...@gmail.com> #35
ed...@gmail.com <ed...@gmail.com> #36
ra...@grigorian.org <ra...@grigorian.org> #37
pe...@qupaya.com <pe...@qupaya.com> #38
ge...@estoes.me <ge...@estoes.me> #39
be...@legendaryplay.gg <be...@legendaryplay.gg> #40
th...@gmail.com <th...@gmail.com> #41
ka...@gmail.com <ka...@gmail.com> #42
ri...@gmail.com <ri...@gmail.com> #43
cb...@gmail.com <cb...@gmail.com> #44
+1
sm...@gmail.com <sm...@gmail.com> #45
ed...@gmail.com <ed...@gmail.com> #46
bu...@gmail.com <bu...@gmail.com> #47
Use the star feature to indicate that this issue affects you rather than commenting +1 PLEASE
sa...@gmail.com <sa...@gmail.com> #48
[Deleted User] <[Deleted User]> #49
va...@webfuelagency.com <va...@webfuelagency.com> #50
on...@ayulla.com <on...@ayulla.com> #51
mi...@iriparo.com <mi...@iriparo.com> #52
pe...@gmail.com <pe...@gmail.com> #53
da...@cpu.edu.ph <da...@cpu.edu.ph> #54
cr...@gmail.com <cr...@gmail.com> #55
yu...@gmail.com <yu...@gmail.com> #56
th...@gmail.com <th...@gmail.com> #57
ar...@gmail.com <ar...@gmail.com> #58
im...@gmail.com <im...@gmail.com> #59
el...@gmail.com <el...@gmail.com> #60
[Deleted User] <[Deleted User]> #61
ni...@hackruiter.com <ni...@hackruiter.com> #62
as...@gmail.com <as...@gmail.com> #63
rj...@gmail.com <rj...@gmail.com> #64
m....@w3b.eu <m....@w3b.eu> #65
[Deleted User] <[Deleted User]> #66
ts...@gmail.com <ts...@gmail.com> #67
ha...@gmail.com <ha...@gmail.com> #68
ab...@qm.edu.sa <ab...@qm.edu.sa> #69
[Deleted User] <[Deleted User]> #70
[Deleted User] <[Deleted User]> #71
la...@gmail.com <la...@gmail.com> #72
ed...@gmail.com <ed...@gmail.com> #73
ca...@appian.com <ca...@appian.com> #74
ro...@gmail.com <ro...@gmail.com> #75
ab...@gmail.com <ab...@gmail.com> #76
vi...@gmail.com <vi...@gmail.com> #77
ka...@riskident.com <ka...@riskident.com> #78
sa...@gmail.com <sa...@gmail.com> #79
am...@gmail.com <am...@gmail.com> #80
[Deleted User] <[Deleted User]> #81
[Deleted User] <[Deleted User]> #82
an...@gmail.com <an...@gmail.com> #83
aj...@codesap.com <aj...@codesap.com> #84
ma...@gmail.com <ma...@gmail.com> #85
ad...@gmail.com <ad...@gmail.com> #86
[Deleted User] <[Deleted User]> #87
na...@gmail.com <na...@gmail.com> #88
ma...@gmail.com <ma...@gmail.com> #89
hc...@gmail.com <hc...@gmail.com> #90
ka...@gmail.com <ka...@gmail.com> #91
sa...@gmail.com <sa...@gmail.com> #92
su...@kula.ai <su...@kula.ai> #93
ka...@gmail.com <ka...@gmail.com> #94
[Deleted User] <[Deleted User]> #95
od...@gmail.com <od...@gmail.com> #96
ad...@pucp.pe <ad...@pucp.pe> #97
fe...@run0km.com <fe...@run0km.com> #98
br...@gmail.com <br...@gmail.com> #99
ig...@nikisoft.ru <ig...@nikisoft.ru> #100
[Deleted User] <[Deleted User]> #101
as...@gmail.com <as...@gmail.com> #102
as...@gmail.com <as...@gmail.com> #103
as...@gmail.com <as...@gmail.com> #104
ek...@gmail.com <ek...@gmail.com> #105
[Deleted User] <[Deleted User]> #106
se...@slapfive.com <se...@slapfive.com> #107
as...@gmail.com <as...@gmail.com> #108
ti...@gmail.com <ti...@gmail.com> #109
mo...@gmail.com <mo...@gmail.com> #110
gl...@egissys.com <gl...@egissys.com> #111
[Deleted User] <[Deleted User]> #112
ss...@gmail.com <ss...@gmail.com> #113
as...@gmail.com <as...@gmail.com> #114
go...@gmail.com <go...@gmail.com> #115
[Deleted User] <[Deleted User]> #116
j....@gmail.com <j....@gmail.com> #117
su...@gmail.com <su...@gmail.com> #118
ph...@gmail.com <ph...@gmail.com> #119
v....@fiters.co <v....@fiters.co> #120
ri...@gmail.com <ri...@gmail.com> #121
za...@gmail.com <za...@gmail.com> #122
ma...@gmail.com <ma...@gmail.com> #123
ro...@gmail.com <ro...@gmail.com> #124
ia...@google.com <ia...@google.com> #125
Dear all,
As you are aware there is currently no Meet API, real-time or otherwise, and while this has been considered, there are no immediate plans to implement one. Therefore, implementing a direct Meet API has been deemed infeasible.
This issue is going to be closed for now, however, please do continue to "star" it if you would like to see something like this implemented. The "stars" serve as votes and with them we can see how many people would like to see a feature. Please bear in mind that the +1
comments, or similar, are not counted.
As for avenues for workarounds:
-
Meet has the attendance tracking feature:
https://support.google.com/meet/answer/10090454 . -
Alternatively, you can use the Google Workspace Admin SDK Reports API for Google Meet audit logs:
https://developers.google.com/admin-sdk/reports/v1/appendix/activity/meet#call_ended . This would allow you, among other thins, to build attendance reports via API.
If you would like to change how the Admin SDK Reports API handles things, please open a new issue for that, do not post it here.
Description
I want to build (in google app scripts and sheets) a viewer that would help users organize and track breakout sessions and jump between sessions.
It would use a real time google meet API to display the names of any users that are currently in a meet, or who have joined a meet.
This would allow for a trainer to monitor who is participating in each room, or with online networking events would allow users to choose which breakout session to join by seeing at a glance how many users are in each room, or whether a room is filled with people they already know or new names they don't recognize.
Attached mockup is simulating a networking event that is taking place at an imaginary bar. Each link is the meet code which would be used by the app script to return the list of emails with active calls.
Thanks for your consideration