Get WebView version number for lollipop?

后端 未结 3 1936
傲寒
傲寒 2020-12-24 02:15

I have Lollipop, and see that we have a separate app for \"android system webview\". Is there any way to get its version number from my own app that uses a WebView instance?

相关标签:
3条回答
  • 2020-12-24 03:14

    UPDATE: Apparently this will not always accurately give the actual WebView client being used on the target device. As of Android 7.0 users can select preferred client (h/t @Greg Dan).


    First, we get the package name from Google Play Store:

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

    Then this

    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");
    }
    

    gives

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

    Hope this helps.

    0 讨论(0)
  • 2020-12-24 03:15

    How about checking the user-agent string?

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

    For me, this outputs:

    User-agent string: Mozilla/5.0 (Linux; Android 5.0; Nexus 4 Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36

    More info: WebView on Android

    In case you override UA string with your own:

    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;
    }
    
    0 讨论(0)
  • 2020-12-24 03:17

    In Android O and newer you can use WebView.getCurrentWebViewPackage();

    import android.webkit.WebView;
    
    ...
    ...
    
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        PackageInfo info = WebView.getCurrentWebViewPackage();
        return info.versionName;
    }
    
    0 讨论(0)
提交回复
热议问题