Add unattended remote access support - #45
Conversation
- Add foreground service, boot receiver, and accessibility remote control - Route agent lifecycle through shared runtime controller - Add unattended setup prompts and settings status entries - Improve remote desktop refresh and session notifications - Update Gradle and scanner dependency versions
…tter battery usage - Add retry backoff logic with delay for agent reconnection attempts - Introduce `shouldKeepForegroundServiceRunning` for better service control - Optimise frame encoding with idle frame delay adjustments - Enhance user disconnect handling via shared preferences - Adjust remote desktop frame capturing to dynamically handle delays
- MeshAgent: stop starting projection immediately after the agent control connection authenticates. - AgentRuntime: require an active desktop tunnel before starting screen projection.
|
Ive had this running on two devices without any issues for the past week or so. My initial commit introduce some battery issues but that was resolved and now its back to basically using nothing. |
…s disabled - Implement user consent prompt via dialogs and notifications for remote desktop access. - Add new notification channel for "Approve/Deny" screen sharing actions. - Ensure thread-safe handling and lifecycle management for capture processes. - Remove redundant battery optimization request logic. - Optimize screenshot capture flow with throttling and backoff mechanisms.
|
A few fixes to the unattended consent flow, with Play Store approval in mind.
To hopefully get this through review we need to do this in Play Console:
How to sideload this with the accessibility changes:Play Store > profile icon > Play Protect > gear/settings icon > toggle off "Scan apps with Play Protect" > install the APK > turn it back on after. Then it blocks the accessibility access until we do this: |
|
I hope that this get official one day, it's really a useful feature. The app itself without that is basically useless, it's not ok to ask a user how to go to the home menu, find all the apps, start the agent and then allow the screen sharing. Plus you can't see when a device is online on the MeshCentral dashboard since the app is not running in the background if it wasn't started at the launch of the device. It would also be cool to add the "device administrator" rights to the app so that it can be set as the device owner, disable FRP on the device and so that the user can't uninstall it unless the device is wiped. |
Potential Concerns:
These changes cause Google Play Protect to flag this .apk when being sideloaded due to what I can tell is the accessibility feature used for unattended access. I was reading up on it, I don't think this should stop the app from getting on the play store. It just means outside of the play store there is
adb installand enterprise based deployments, or being rooted.Disclaimer: An AI coding assistant was using when developing these changes