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