【发布时间】:2018-08-07 18:26:26
【问题描述】:
我正在开发一项功能,只有当设备上安装的 chrome 版本高于 65 版时,我才需要将用户从 Android Native APP 转换到 Chrome 自定义选项卡。所以我的问题是,有没有办法可以检测到 chrome Android Native App 的版本?
【问题讨论】:
标签: android google-chrome
我正在开发一项功能,只有当设备上安装的 chrome 版本高于 65 版时,我才需要将用户从 Android Native APP 转换到 Chrome 自定义选项卡。所以我的问题是,有没有办法可以检测到 chrome Android Native App 的版本?
【问题讨论】:
标签: android google-chrome
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 将按照他们迄今为止所做的那样进行版本控制,如果他们决定更改版本控制,那么逻辑也应该更新。 (我不认为这会发生,但为了最大的安全性,把所有东西都放在一个 try-catch 中)
【讨论】:
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
【讨论】: