diff --git a/core/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java b/core/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java index d1b1c09b..99d53146 100644 --- a/core/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java +++ b/core/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java @@ -60,7 +60,7 @@ public abstract class XC_LoadPackage extends XCallback implements IXposedHookLoa /** * Wraps information about the app being loaded. */ - public static final class LoadPackageParam extends XCallback.Param implements XposedModuleInterface.PackageLoadedParam { + public static final class LoadPackageParam extends XCallback.Param { /** * @hide */ @@ -92,41 +92,6 @@ public abstract class XC_LoadPackage extends XCallback implements IXposedHookLoa * Set to {@code true} if this is the first (and main) application for this process. */ public boolean isFirstApplication; - - @NonNull - @Override - public String getPackageName() { - return packageName; - } - - @NonNull - @Override - public ApplicationInfo getAppInfo() { - return appInfo; - } - - @NonNull - @Override - public ClassLoader getClassLoader() { - return classLoader; - } - - @NonNull - @Override - public String getProcessName() { - return processName; - } - - @Override - public boolean isFirstApplication() { - return isFirstApplication; - } - - @Nullable - @Override - public Bundle getExtras() { - return null; - } } /** diff --git a/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java b/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java index 68c5152d..406bba0a 100644 --- a/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java +++ b/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java @@ -25,6 +25,11 @@ import static org.lsposed.lspd.core.ApplicationServiceClient.serviceClient; import android.app.ActivityThread; import android.app.AndroidAppHelper; import android.app.LoadedApk; +import android.content.pm.ApplicationInfo; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import org.lsposed.lspd.impl.LSPosedContext; import org.lsposed.lspd.util.Hookers; @@ -93,7 +98,36 @@ public class LoadedApkGetCLHooker extends XC_MethodHook { Hookers.logD("Call handleLoadedPackage: packageName=" + lpparam.packageName + " processName=" + lpparam.processName + " isFirstApplication=" + isFirstApplication + " classLoader=" + lpparam.classLoader + " appInfo=" + lpparam.appInfo); XC_LoadPackage.callAll(lpparam); - LSPosedContext.callOnPackageLoaded(lpparam); + LSPosedContext.callOnPackageLoaded(new XposedModuleInterface.PackageLoadedParam() { + @NonNull + @Override + public String getPackageName() { + return loadedApk.getPackageName(); + } + + @NonNull + @Override + public ApplicationInfo getAppInfo() { + return loadedApk.getApplicationInfo(); + } + + @NonNull + @Override + public ClassLoader getClassLoader() { + return classLoader; + } + + @Override + public boolean isFirstApplication() { + return isFirstApplication; + } + + @Nullable + @Override + public Bundle getExtras() { + return null; + } + }); } catch (Throwable t) { Hookers.logE("error when hooking LoadedApk#getClassLoader", t); } finally {