Java 在android中获取版本代码时,包管理器已死亡
当我得到如下版本代码时:Java 在android中获取版本代码时,包管理器已死亡,java,android,Java,Android,当我得到如下版本代码时: public static int getVersionCode(Context context) { try { PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); return info.versionCode; } catch (Exception e) { return
public static int getVersionCode(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
return info.versionCode;
} catch (Exception e) {
return -1;
}
}
以下是发生时的痕迹:
java.lang.RuntimeException: Package manager has died
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:78)
试着使用下面的代码,它很旧,但我想会有用的
public int getVersion(Context context)
{
try
{
PackageInfo pInfo = context.getPackageManager().getPackageInfo("yourpackagename", PackageManager.GET_META_DATA);
return pInfo.versionCode;
}
catch (NameNotFoundException e)
{
return 0;
}
}
}
我有类似的代码,它工作正常,所以我不明白为什么你的系统崩溃了,我很好奇你是否能找到导致崩溃的原因 另一种方法是不动态地查找它,而是从构建配置中获取它
public int getVersion(Context context) {
return BuildConfig.VERSION_CODE;
}
使用
PackageInfo=context.getPackageManager().getPackageInfo(context.getPackageName(),PackageManager.GET_META_DATA)
我想context.getPackageName()是空的,这可能会起作用
public int getVersion(Context context)
{
try
{
PackageInfo pInfo = context.getPackageManager().getPackageInfo("yourpackagename", PackageManager.GET_META_DATA);
return pInfo.versionCode;
}
catch (NameNotFoundException e)
{
return 0;
}
}
}