如何从任何已安装应用程序的软件包名称中获取版本代码?



我正在为我的公司创建一个类似Play商店的应用程序。我已经从我的网络应用程序在我的服务器上上传了apk。我已经从我的安卓应用程序中的网址下载了apk,并提示安装屏幕。现在我想要的是我从 API 获取新版本代码和包名称。我想从包名称中获取已安装应用程序的版本代码。如何从从 API 获取的包名称中获取版本代码?

所有提供的答案都是正确的。但是,请注意,PackageInfo.versionCode已在 API 级别 28 中弃用。请改用getLongVersionCode运行Android Pie或更高版本的设备,如下所示...

var info: PackageInfo? = null
var versionCode: Long? = null
try {
info = context?.packageManager?.getPackageInfo(context?.packageName, 0)
versionCode =
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P)  info?.versionCode?.toLong()
else info?.longVersionCode 
}
catch(e: PackageManager.NameNotFoundException){
}

使用这个

public Long getVersionNo(String packageName){
PackageInfo packageInfo  = null;
try {
packageInfo = getPackageManager().getPackageInfo(packageName, 0);
return packageInfo.getLongVersionCode();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}

将包名称传递给此函数,它将返回设备上安装的应用程序的版本号。如果未找到应用程序,它将返回 null 。

List<PackageInfo> packagesInstalledList = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA);
PackageInfo packageInfo = context.getPackageManager().getPackageInfo( "com.xyz", 0 );
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){
long versionCode = PackageInfoCompat.getLongVersionCode(packageInfo);
}else {
long versionCode = packageInfo.versionCode;//PackageInfo Deprecated in API-28
}
String versionName = packageInfo.versionName;

最新更新