Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中获取版本代码时,包管理器已死亡_Java_Android - Fatal编程技术网

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;
        }
    }
}