获取棒棒糖的WebView版本号?

时间:2015-03-19 13:27:26

标签: android

我有Lollipop,看到我们有一个单独的应用程序用于" android系统webview"。有没有办法从我自己的使用WebView实例的应用程序中获取其版本号?

我想报告一些关于我的用户使用的版本的统计信息。

由于

3 个答案:

答案 0 :(得分:32)

如何检查用户代理字符串?

Log.i("WebViewActivity", "UA: " + mWebView.getSettings().getUserAgentString());

对我来说,这会输出:

  

用户代理字符串:Mozilla / 5.0(Linux; Android 5.0; Nexus 4   Build / LRX21T)AppleWebKit / 537.36(KHTML,类似Gecko)版本/ 4.0    Chrome / 37.0.0.0 移动版Safari / 537.36

更多信息:WebView on Android

如果您使用自己的字符覆盖UA字符串:

String getWebviewVersionInfo() {
    // Overridden UA string
    String alreadySetUA = mWebView.getSettings().getUserAgentString();

    // Next call to getUserAgentString() will get us the default
    mWebView.getSettings().setUserAgentString(null);

    // Devise a method for parsing the UA string
    String webViewVersion = 
           parseUAForVersion(mWebView.getSettings().getUserAgentString());

    // Revert to overriden UA string
    mWebView.getSettings().setUserAgentString(alreadySetUA);

    return webViewVersion;
}

答案 1 :(得分:15)

<强>更新 显然,这并不总能准确地给出在目标设备上使用的实际WebView客户端。从Android 7.0开始,用户可以select preferred client(h / t @Greg Dan)。


首先,我们从Google Play商店获取包名称:

https://play.google.com/store/apps/details?id=com.google.android.webview

然后这个

PackageManager pm = getPackageManager();
try {
    PackageInfo pi = pm.getPackageInfo("com.google.android.webview", 0);
    Log.d(TAG, "version name: " + pi.versionName);
    Log.d(TAG, "version code: " + pi.versionCode);
} catch (PackageManager.NameNotFoundException e) {
    Log.e(TAG, "Android System WebView is not found");
}

给出

D/WebViewDetails﹕ version name: 39 (1743759-arm)
D/WebViewDetails﹕ version code: 320201

希望这有帮助。

答案 2 :(得分:0)

在Android O及更高版本中,您可以使用WebView.getCurrentWebViewPackage();

import android.webkit.WebView;

...
...


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    PackageInfo info = WebView.getCurrentWebViewPackage();
    return info.versionName;
}