在应用程序初始化之前,如何获取包versionName
和函数versionCode
内的内容?IXposedHookLoadPackage.handleLoadPackage
我试过使用AndroidAppHelper.currentApplication()
,但它返回null
。
问问题
426 次
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 回答