Android 如何在Xposed中获得钩住的包版本?

Android 如何在Xposed中获得钩住的包版本?,android,xposed,Android,Xposed,在初始化应用程序之前,如何在IXposedHookLoadPackage.handleLoadPackage函数中获取包的版本名和版本代码?我尝试过使用AndroidAppHelper.currentApplication,但它返回null。以下是我使用idea的代码。它以versionName versionCode格式返回字符串 private static String getPackageVersion(XC_LoadPackage.LoadPackageParam lpparam) {

在初始化应用程序之前,如何在IXposedHookLoadPackage.handleLoadPackage函数中获取包的版本名和版本代码?我尝试过使用AndroidAppHelper.currentApplication,但它返回null。

以下是我使用idea的代码。它以versionName versionCode格式返回字符串

private static String getPackageVersion(XC_LoadPackage.LoadPackageParam lpparam) {
    try {
        Class<?> parserCls = XposedHelpers.findClass("android.content.pm.PackageParser", lpparam.classLoader);
        Object parser = parserCls.newInstance();
        File apkPath = new File(lpparam.appInfo.sourceDir);
        Object pkg = XposedHelpers.callMethod(parser, "parsePackage", apkPath, 0);
        String versionName = (String)XposedHelpers.getObjectField(pkg, "mVersionName");
        int versionCode = XposedHelpers.getIntField(pkg, "mVersionCode");
        return String.format("%s (%d)", versionName, versionCode);
    } catch (Throwable e) {
        return "(unknown)";
    }
}