CrackMe.apk
Download file
package androidx.core.graphics.drawable;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.ColorFilter;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.DrawableContainer;
import android.graphics.drawable.InsetDrawable;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import java.io.IOException;
import java.lang.reflect.Method;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
public final class DrawableCompat {
private static final String TAG = "DrawableCompat";
private static Method sGetLayoutDirectionMethod;
private static boolean sGetLayoutDirectionMethodFetched;
private static Method sSetLayoutDirectionMethod;
private static boolean sSetLayoutDirectionMethodFetched;
@Deprecated
public static void jumpToCurrentState(Drawable drawable) {
drawable.jumpToCurrentState();
}
public static void setAutoMirrored(Drawable drawable, boolean z) {
if (Build.VERSION.SDK_INT >= 19) {
drawable.setAutoMirrored(z);
}
}
public static boolean isAutoMirrored(Drawable drawable) {
if (Build.VERSION.SDK_INT >= 19) {
return drawable.isAutoMirrored();
}
return false;
}
public static void setHotspot(Drawable drawable, float f, float f2) {
if (Build.VERSION.SDK_INT >= 21) {
drawable.setHotspot(f, f2);
}
}
public static void setHotspotBounds(Drawable drawable, int i, int i2, int i3, int i4) {
if (Build.VERSION.SDK_INT >= 21) {
drawable.setHotspotBounds(i, i2, i3, i4);
}
}
public static void setTint(Drawable drawable, int i) {
if (Build.VERSION.SDK_INT >= 21) {
drawable.setTint(i);
} else if (drawable instanceof TintAwareDrawable) {
((TintAwareDrawable) drawable).setTint(i);
}
}
public static void setTintList(Drawable drawable, ColorStateList colorStateList) {
if (Build.VERSION.SDK_INT >= 21) {
drawable.setTintList(colorStateList);
} else if (drawable instanceof TintAwareDrawable) {
((TintAwareDrawable) drawable).setTintList(colorStateList);
}
}
public static void setTintMode(Drawable drawable, PorterDuff.Mode mode) {
if (Build.VERSION.SDK_INT >= 21) {
drawable.setTintMode(mode);
} else if (drawable instanceof TintAwareDrawable) {
((TintAwareDrawable) drawable).setTintMode(mode);
}
}
public static int getAlpha(Drawable drawable) {
if (Build.VERSION.SDK_INT >= 19) {
return drawable.getAlpha();
}
return 0;
}
public static void applyTheme(Drawable drawable, Resources.Theme theme) {
if (Build.VERSION.SDK_INT >= 21) {
drawable.applyTheme(theme);
}
}
public static boolean canApplyTheme(Drawable drawable) {
if (Build.VERSION.SDK_INT >= 21) {
return drawable.canApplyTheme();
}
return false;
}
public static ColorFilter getColorFilter(Drawable drawable) {
if (Build.VERSION.SDK_INT >= 21) {
return drawable.getColorFilter();
}
return null;
}
public static void clearColorFilter(Drawable drawable) {
DrawableContainer.DrawableContainerState drawableContainerState;
if (Build.VERSION.SDK_INT >= 23) {
drawable.clearColorFilter();
} else if (Build.VERSION.SDK_INT >= 21) {
drawable.clearColorFilter();
if (drawable instanceof InsetDrawable) {
clearColorFilter(((InsetDrawable) drawable).getDrawable());
} else if (drawable instanceof WrappedDrawable) {
clearColorFilter(((WrappedDrawable) drawable).getWrappedDrawable());
} else if ((drawable instanceof DrawableContainer) && (drawableContainerState = (DrawableContainer.DrawableContainerState) ((DrawableContainer) drawable).getConstantState()) != null) {
int childCount = drawableContainerState.getChildCount();
for (int i = 0; i < childCount; i++) {
Drawable child = drawableContainerState.getChild(i);
if (child != null) {
clearColorFilter(child);
}
}
}
} else {
drawable.clearColorFilter();
}
}
public static void inflate(Drawable drawable, Resources resources, XmlPullParser xmlPullParser, AttributeSet attributeSet, Resources.Theme theme) throws XmlPullParserException, IOException {
if (Build.VERSION.SDK_INT >= 21) {
drawable.inflate(resources, xmlPullParser, attributeSet, theme);
} else {
drawable.inflate(resources, xmlPullParser, attributeSet);
}
}
public static Drawable wrap(Drawable drawable) {
if (Build.VERSION.SDK_INT >= 23) {
return drawable;
}
return Build.VERSION.SDK_INT >= 21 ? !(drawable instanceof TintAwareDrawable) ? new WrappedDrawableApi21(drawable) : drawable : !(drawable instanceof TintAwareDrawable) ? new WrappedDrawableApi14(drawable) : drawable;
}
public static <T extends Drawable> T unwrap(Drawable drawable) {
return drawable instanceof WrappedDrawable ? ((WrappedDrawable) drawable).getWrappedDrawable() : drawable;
}
public static boolean setLayoutDirection(Drawable drawable, int i) {
if (Build.VERSION.SDK_INT >= 23) {
return drawable.setLayoutDirection(i);
}
if (Build.VERSION.SDK_INT >= 17) {
if (!sSetLayoutDirectionMethodFetched) {
Class<Drawable> cls = Drawable.class;
try {
Method declaredMethod = cls.getDeclaredMethod("setLayoutDirection", new Class[]{Integer.TYPE});
sSetLayoutDirectionMethod = declaredMethod;
declaredMethod.setAccessible(true);
} catch (NoSuchMethodException e) {
Log.i(TAG, "Failed to retrieve setLayoutDirection(int) method", e);
}
sSetLayoutDirectionMethodFetched = true;
}
Method method = sSetLayoutDirectionMethod;
if (method != null) {
try {
method.invoke(drawable, new Object[]{Integer.valueOf(i)});
return true;
} catch (Exception e2) {
Log.i(TAG, "Failed to invoke setLayoutDirection(int) via reflection", e2);
sSetLayoutDirectionMethod = null;
}
}
}
return false;
}
public static int getLayoutDirection(Drawable drawable) {
if (Build.VERSION.SDK_INT >= 23) {
return drawable.getLayoutDirection();
}
if (Build.VERSION.SDK_INT >= 17) {
if (!sGetLayoutDirectionMethodFetched) {
try {
Method declaredMethod = Drawable.class.getDeclaredMethod("getLayoutDirection", new Class[0]);
sGetLayoutDirectionMethod = declaredMethod;
declaredMethod.setAccessible(true);
} catch (NoSuchMethodException e) {
Log.i(TAG, "Failed to retrieve getLayoutDirection() method", e);
}
sGetLayoutDirectionMethodFetched = true;
}
Method method = sGetLayoutDirectionMethod;
if (method != null) {
try {
return ((Integer) method.invoke(drawable, new Object[0])).intValue();
} catch (Exception e2) {
Log.i(TAG, "Failed to invoke getLayoutDirection() via reflection", e2);
sGetLayoutDirectionMethod = null;
}
}
}
return 0;
}
private DrawableCompat() {
}
}
Download file