Jetpack WebViewProvider:检测当前用的是谁,引导用户更新
基本用法
// 1. 获取当前设备上所有可用的 WebView provider
List<WebViewProvider.WebViewProviderInfo> providers =
WebViewProvider.getCurrentWebViewProvider(context);
// 2. 找到当前选中的那个
WebViewProvider.WebViewProviderInfo current = providers.stream()
.filter(p -> p.isDefault)
.findFirst()
.orElse(null);
// 3. 打印版本号
if (current != null) {
Log.d("WebView", "当前 provider: " + current.packageName);
Log.d("WebView", "版本: " + current.versionCode);
}
能拿到什么
| 字段 | 含义 |
|---|---|
| packageName | provider 的包名(如 com.google.android.webview) |
| versionCode | 版本号 |
| label | 显示名("Android System WebView") |
| isDefault | 是否为当前系统选中的 provider |
| signature | APK 签名(调试用) |
引导用户更新
如果检测到当前 WebView 版本过旧(比如 Chromium 大版本落后 3+),可以直接引导:
try {
WebViewProvider.getInstance().startActivityForResult(
activity,
activity.getPackageManager(),
1002 // requestCode
);
} catch (ActivityNotFoundException e) {
// 用户设备上没有 Play 商店(国产 ROM),降级提示用户手动更新
Toast.makeText(activity,
"请前往应用商店搜索 Android System WebView 更新",
Toast.LENGTH_LONG).show();
}
WebView Updater 组件
Jetpack 还提供了一个独立的 androidx.webkit:webview-updater 组件,可以在后台检测更新、弹通知、引导安装。适合对 WebView 版本有硬性要求的 App(比如银行、金融、安全类)。