如何从我的Android应用程序中检测已安装的Chrome版本?

mwkjh3gx  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(214)

我正在研究一个功能,我需要从Android原生应用程序的用户过渡到Chrome自定义选项卡,只有当设备上安装的Chrome版本大于版本65.所以我的问题是,有没有一种方法,我们可以从Android原生应用程序检测Chrome版本?

50pmv0ei

50pmv0ei1#

private boolean isChromeInstalledAndVersionGreaterThan65() {
    PackageInfo pInfo;
    try {
        pInfo = getPackageManager().getPackageInfo("com.android.chrome", 0);
    } catch (PackageManager.NameNotFoundException e) {
        //chrome is not installed on the device
        return false;
    }
    if (pInfo != null) {
        //Chrome has versions like 68.0.3440.91, we need to find the major version
        //using the first dot we find in the string
        int firstDotIndex = pInfo.versionName.indexOf(".");
        //take only the number before the first dot excluding the dot itself
        String majorVersion = pInfo.versionName.substring(0, firstDotIndex);
        return Integer.parseInt(majorVersion) > 65;
    }
    return false;
}

字符串
显然,这将工作,直到Chrome将版本如何,他们到现在为止,如果他们将决定改变版本的逻辑应该更新以及。(我不认为这将发生,但最大的安全把一切都在一个尝试捕捉)
如果目标是API 30或以上,请不要忘记将Chrome软件包添加到您想要在AndroidManifest.xml中查询的软件包列表中:

<manifest ...>
    ...
    <queries>
        <package android:name="com.android.chrome" />
    </queries>
    ...
</manifest>

cgvd09ve

cgvd09ve2#

private boolean checkVersion(String uri) {
            String versionName;
            int version = 0;
            PackageManager pm = getPackageManager();
            try {
                versionName = pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES).versionName;
                String[] split = versionName.split(Pattern.quote("."));
                String major = split[0];
                version = Integer.parseInt(major);
                return version > 65;
            } catch (PackageManager.NameNotFoundException e) {
                //Catch the Exception
            }
            return false;
}

字符串
然后调用上面的方法,

checkVersion("com.android.chrome"); //This will return a boolean value

相关问题