CrackMe.apk
Download file
package androidx.core.view;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import java.lang.reflect.Field;
public final class LayoutInflaterCompat {
private static final String TAG = "LayoutInflaterCompatHC";
private static boolean sCheckedField;
private static Field sLayoutInflaterFactory2Field;
static class Factory2Wrapper implements LayoutInflater.Factory2 {
final LayoutInflaterFactory mDelegateFactory;
Factory2Wrapper(LayoutInflaterFactory layoutInflaterFactory) {
this.mDelegateFactory = layoutInflaterFactory;
}
public View onCreateView(String str, Context context, AttributeSet attributeSet) {
return this.mDelegateFactory.onCreateView((View) null, str, context, attributeSet);
}
public View onCreateView(View view, String str, Context context, AttributeSet attributeSet) {
return this.mDelegateFactory.onCreateView(view, str, context, attributeSet);
}
public String toString() {
return getClass().getName() + "{" + this.mDelegateFactory + "}";
}
}
private static void forceSetFactory2(LayoutInflater layoutInflater, LayoutInflater.Factory2 factory2) {
if (!sCheckedField) {
try {
Field declaredField = LayoutInflater.class.getDeclaredField("mFactory2");
sLayoutInflaterFactory2Field = declaredField;
declaredField.setAccessible(true);
} catch (NoSuchFieldException e) {
Log.e(TAG, "forceSetFactory2 Could not find field 'mFactory2' on class " + LayoutInflater.class.getName() + "; inflation may have unexpected results.", e);
}
sCheckedField = true;
}
Field field = sLayoutInflaterFactory2Field;
if (field != null) {
try {
field.set(layoutInflater, factory2);
} catch (IllegalAccessException e2) {
Log.e(TAG, "forceSetFactory2 could not set the Factory2 on LayoutInflater " + layoutInflater + "; inflation may have unexpected results.", e2);
}
}
}
private LayoutInflaterCompat() {
}
@Deprecated
public static void setFactory(LayoutInflater layoutInflater, LayoutInflaterFactory layoutInflaterFactory) {
Factory2Wrapper factory2Wrapper = null;
if (Build.VERSION.SDK_INT >= 21) {
if (layoutInflaterFactory != null) {
factory2Wrapper = new Factory2Wrapper(layoutInflaterFactory);
}
layoutInflater.setFactory2(factory2Wrapper);
return;
}
if (layoutInflaterFactory != null) {
factory2Wrapper = new Factory2Wrapper(layoutInflaterFactory);
}
layoutInflater.setFactory2(factory2Wrapper);
LayoutInflater.Factory factory = layoutInflater.getFactory();
if (factory instanceof LayoutInflater.Factory2) {
forceSetFactory2(layoutInflater, (LayoutInflater.Factory2) factory);
} else {
forceSetFactory2(layoutInflater, factory2Wrapper);
}
}
public static void setFactory2(LayoutInflater layoutInflater, LayoutInflater.Factory2 factory2) {
layoutInflater.setFactory2(factory2);
if (Build.VERSION.SDK_INT < 21) {
LayoutInflater.Factory factory = layoutInflater.getFactory();
if (factory instanceof LayoutInflater.Factory2) {
forceSetFactory2(layoutInflater, (LayoutInflater.Factory2) factory);
} else {
forceSetFactory2(layoutInflater, factory2);
}
}
}
@Deprecated
public static LayoutInflaterFactory getFactory(LayoutInflater layoutInflater) {
LayoutInflater.Factory factory = layoutInflater.getFactory();
if (factory instanceof Factory2Wrapper) {
return ((Factory2Wrapper) factory).mDelegateFactory;
}
return null;
}
}
Download file