0

在应用程序初始化之前,如何获取包versionName和函数versionCode内的内容?IXposedHookLoadPackage.handleLoadPackage我试过使用AndroidAppHelper.currentApplication(),但它返回null

4

1 回答 1

1

这是我使用的代码(来自这篇文章的想法)。它返回格式为 的字符串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)";
    }
}
于 2017-03-12T19:42:36.837 回答