我正在为我的公司创建一个类似Play商店的应用。我已经从Web应用程序在服务器上上传了APK。我已经从android应用中的url下载了apk,并提示安装屏幕。现在我想要从API获取新版本代码和程序包名称。我想从软件包名称中获取已安装应用的版本代码。如何从我从API获得的程序包名称中获得版本代码?
答案 0 :(得分:0)
使用此
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;
}
将软件包名称传递给此函数,它将返回设备上安装的应用程序的版本号。如果找不到app,它将返回null。
答案 1 :(得分:0)
尝试一下
try {
PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
String version = pInfo.versionName;
int verCode = pInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
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;
答案 3 :(得分:0)
所有提供的答案都是正确的。但是,请注意,PackageInfo.versionCode
已在API级别28中弃用。对于运行Android Pie或更高版本的设备,请使用getLongVersionCode
,如下所示...
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){
}