package de.tu_darmstadt.sse.additionalappclasses.classloading; import android.util.Log; import dalvik.system.DexFile; import de.tu_darmstadt.sse.sharedclasses.SharedClassesSettings; public class InterceptingClassLoader { public static Class<?> loadClass(DexFile dexFile, String className, ClassLoader classLoader) throws ClassNotFoundException { try { Log.i(SharedClassesSettings.TAG, "Loading class " + className); // Try the default class loader return Class.forName(className); } catch (ClassNotFoundException ex) { try { // Try the given class loader return classLoader.loadClass(className); } catch (ClassNotFoundException ex2) { // We have no other choice than using the original class loading Log.w(SharedClassesSettings.TAG, "Could not intercept class loading"); return dexFile.loadClass(className, classLoader); } } } }