What's Changed
New: support for ROMs where SystemImpl.getWebViewPackages() no longer exists (e.g. Samsung One UI on Android 16). Some OEM builds optimize services.jar so that callers read the provider field mWebViewProviderPackages directly instead of going through the getter, which left the module with nothing to hook — installed providers never appeared in the picker (#37).
When the getter is missing, AnyWebView now hooks the SystemImpl constructors and replaces the provider field with the merged array once construction completes. The field is resolved by its AOSP name first; if a build renamed it, a type match is used only when it is unambiguous, otherwise the module gives up with a log line rather than writing the wrong field. The merge is idempotent, so constructors delegating through this(...) cannot append twice, and the signature handling (including same-named forks like Cromite) is shared with the method-hook path. Both entry points (libxposed and de.robv) have the fallback; builds that still have the getter keep the original method hook unchanged.
The reporter's decompilation of the affected services.jar shaped this fix, and their on-device test settled the two open unknowns: the final-field write is accepted by that ART build, and PackageManager queries succeed during the WebViewUpdateService constructor (#37).
Compatibility:
- Android 16 (Samsung One UI port, S711B firmware, Magisk + LSPosed 2.2.1) - constructor fallback working: AOSmium WebView listed and selectable; a same-named Cromite install re-validated by the signature rewrite, see #37
- Android 8.1 - signature comparison fixed in 1.4.4, see #36
- Android 7-15 and AOSP-style 16 - method-hook path unchanged
- Other ROMs that removed the getter - reports welcome; the framework log line
getWebViewPackages missing, hooking SystemImpl constructorsindicates the fallback is active
Full Changelog: v1.4.4...v1.4.5