AndroidAppHelper
AndroidAppHelper
app;
import java.lang.ref.WeakReference;
import java.util.Map;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.IBinder;
import android.view.Display;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
/**
* Accessor for package level methods/fields in package android.app
*/
public class AndroidAppHelper {
private static Class<?> CLASS_RESOURCES_KEY;
private static boolean HAS_IS_THEMEABLE = false;
static {
CLASS_RESOURCES_KEY = (Build.VERSION.SDK_INT < 19) ?
findClass("android.app.ActivityThread$ResourcesKey", null)
: findClass("android.content.res.ResourcesKey", null);
try {
// T-Mobile theming engine (CyanogenMod etc.)
findField(CLASS_RESOURCES_KEY, "mIsThemeable");
HAS_IS_THEMEABLE = true;
} catch (NoSuchFieldError ignored) {
} catch (Throwable t) { XposedBridge.log(t); }
}
Object resourcesKey;
if (Build.VERSION.SDK_INT <= 16)
resourcesKey = createResourcesKey(resDir, scale, isThemeable);
else if (Build.VERSION.SDK_INT <= 18)
resourcesKey = createResourcesKey(resDir,
Display.DEFAULT_DISPLAY, null, scale, isThemeable);
else
resourcesKey = createResourcesKey(resDir,
Display.DEFAULT_DISPLAY, null, scale, null, isThemeable);
if (resourcesKey != null)
getActiveResources(thread).put(resourcesKey, new
WeakReference<Resources>(resources));
}