Android 如何从任何已安装应用程序的包名中获取versionCode?

Android 如何从任何已安装应用程序的包名中获取versionCode?,android,Android,我正在为我的公司创建一个类似play store的应用程序。我已从web应用程序将apk上载到服务器上。我已经从android应用程序的url下载了apk,并提示安装屏幕。现在我想要的是从API中获得新的版本代码和包名。我想从软件包名称中获取已安装应用程序的版本代码。如何从API中获取的包名中获取版本代码?使用此选项 public Long getVersionNo(String packageName){ PackageInfo packageInfo = null; try

我正在为我的公司创建一个类似play store的应用程序。我已从web应用程序将apk上载到服务器上。我已经从android应用程序的url下载了apk,并提示安装屏幕。现在我想要的是从API中获得新的版本代码和包名。我想从软件包名称中获取已安装应用程序的版本代码。如何从API中获取的包名中获取版本代码?

使用此选项

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。

试试这个

try {  
  PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);  
  String version = pInfo.versionName;  
  int verCode = pInfo.versionCode;  
} catch (PackageManager.NameNotFoundException e) {  
  e.printStackTrace();  
}  
List packagesInstalledList=getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA);
PackageInfo PackageInfo=context.getPackageManager().getPackageInfo(“com.xyz”,0);
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.P){
long versionCode=packageInfo.getLongVersionCode(packageInfo);
}否则{
long versionCode=packageInfo.versionCode;//在API-28中不推荐使用packageInfo
}
字符串versionName=packageInfo.versionName;

提供的所有答案都是正确的。但是,请注意,
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){

    }
var信息:PackageInfo?=无效的
变量版本代码:长?=无效的
试一试{
info=context?.packageManager?.getPackageInfo(context?.packageName,0)
版本代码=
if(Build.VERSION.SDK_INT最好使用PACKEGIN FICOPLATPLS考虑在API级别28中禁止PultAudio.FraveNo.Givig错误“不能解决方法GeGoLoopEngon CODE())确保您的TalkSDKEPDATE是2PLS,考虑PACKEAGIN。版本代码在API级别28中被弃用。它是GIVIG错误“不能解决方法GeGoLoopEngon CODE())。确保您有以下导入
导入android.content.pm.PackageInfo;导入android.content.pm.PackageManager
    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){

    }