I would like to find a way for an Android app to interact with a web site, completely in the background without rendering the page in any view, without use of the main thread. The idea is for the app to run as a service, periodically authenticate, check a web page, and only alert the user when certain (rare) conditions arise.
The library should be interoperable with one of Android's features that allow sequential long-running processes, such as
WorkManager requests (where a string of dependent operations can be enqueued to run one after the other, or, if something fails, to fail out). Alternatively, it could run as
AsyncTask type or any other established background processing for Android.
The following are my impressions, which may be incorrect, so please advise if I'm off-base:
No working Android version (also problem running headless?)
Insists on a 'View' and main thread
- Android WebView
I'm having trouble figuring out what happened to
HtmlUnit. It appears that somehow
Selenium co-opted it (but haven't done a lot of research on this). It would be great if this solution worked, but when I try to use it, I get an error, which links to this discussion. I'm wondering if Google didn't figure out a way to torpedo the open source community; they seem to have grabbed the source, integrated it into Android, then changed it so it no longer works.
There are apparently ways to hack the Android
Looper to get
WebView to kind of do what is needed, but it's less elegant (ie, harder to program), than
HtmlUnit would be. And I'm not sure how well it would work as a true background service, with no foreground intent and no view.
If there are other libraries that might solve this problem, please advise. If one of the libraries above would solve the problem if I were more informed about how, also, please advise.