CrackMe.apk
Download file
package androidx.core.view;
import android.app.UiModeManager;
import android.content.Context;
import android.graphics.Point;
import android.os.Build;
import android.text.TextUtils;
import android.view.Display;
import androidx.core.util.Preconditions;
public final class DisplayCompat {
private static final int DISPLAY_SIZE_4K_HEIGHT = 2160;
private static final int DISPLAY_SIZE_4K_WIDTH = 3840;
private DisplayCompat() {
}
public static ModeCompat getMode(Context context, Display display) {
if (Build.VERSION.SDK_INT >= 23) {
return Api23Impl.getMode(context, display);
}
return new ModeCompat(getDisplaySize(context, display));
}
private static Point getDisplaySize(Context context, Display display) {
Point currentDisplaySizeFromWorkarounds = getCurrentDisplaySizeFromWorkarounds(context, display);
if (currentDisplaySizeFromWorkarounds != null) {
return currentDisplaySizeFromWorkarounds;
}
Point point = new Point();
if (Build.VERSION.SDK_INT >= 17) {
Api17Impl.getRealSize(display, point);
} else {
display.getSize(point);
}
return point;
}
public static ModeCompat[] getSupportedModes(Context context, Display display) {
if (Build.VERSION.SDK_INT >= 23) {
return Api23Impl.getSupportedModes(context, display);
}
return new ModeCompat[]{getMode(context, display)};
}
private static Point parseDisplaySize(String str) throws NumberFormatException {
String[] split = str.trim().split("x", -1);
if (split.length == 2) {
int parseInt = Integer.parseInt(split[0]);
int parseInt2 = Integer.parseInt(split[1]);
if (parseInt > 0 && parseInt2 > 0) {
return new Point(parseInt, parseInt2);
}
}
throw new NumberFormatException();
}
private static String getSystemProperty(String str) {
try {
Class<?> cls = Class.forName("android.os.SystemProperties");
return (String) cls.getMethod("get", new Class[]{String.class}).invoke(cls, new Object[]{str});
} catch (Exception unused) {
return null;
}
}
private static boolean isTv(Context context) {
UiModeManager uiModeManager = (UiModeManager) context.getSystemService("uimode");
return uiModeManager != null && uiModeManager.getCurrentModeType() == 4;
}
private static Point parsePhysicalDisplaySizeFromSystemProperties(String str, Display display) {
if (display.getDisplayId() != 0) {
return null;
}
String systemProperty = getSystemProperty(str);
if (TextUtils.isEmpty(systemProperty)) {
return null;
}
try {
return parseDisplaySize(systemProperty);
} catch (NumberFormatException unused) {
return null;
}
}
static Point getCurrentDisplaySizeFromWorkarounds(Context context, Display display) {
Point point;
if (Build.VERSION.SDK_INT < 28) {
point = parsePhysicalDisplaySizeFromSystemProperties("sys.display-size", display);
} else {
point = parsePhysicalDisplaySizeFromSystemProperties("vendor.display-size", display);
}
if (point != null) {
return point;
}
if (!isSonyBravia4kTv(context) || !isCurrentModeTheLargestMode(display)) {
return null;
}
return new Point(DISPLAY_SIZE_4K_WIDTH, DISPLAY_SIZE_4K_HEIGHT);
}
private static boolean isSonyBravia4kTv(Context context) {
return isTv(context) && "Sony".equals(Build.MANUFACTURER) && Build.MODEL.startsWith("BRAVIA") && context.getPackageManager().hasSystemFeature("com.sony.dtv.hardware.panel.qfhd");
}
static boolean isCurrentModeTheLargestMode(Display display) {
if (Build.VERSION.SDK_INT >= 23) {
return Api23Impl.isCurrentModeTheLargestMode(display);
}
return true;
}
static class Api23Impl {
private Api23Impl() {
}
static ModeCompat getMode(Context context, Display display) {
Display.Mode mode = display.getMode();
Point currentDisplaySizeFromWorkarounds = DisplayCompat.getCurrentDisplaySizeFromWorkarounds(context, display);
if (currentDisplaySizeFromWorkarounds == null || physicalSizeEquals(mode, currentDisplaySizeFromWorkarounds)) {
return new ModeCompat(mode, true);
}
return new ModeCompat(mode, currentDisplaySizeFromWorkarounds);
}
public static ModeCompat[] getSupportedModes(Context context, Display display) {
ModeCompat modeCompat;
Display.Mode[] supportedModes = display.getSupportedModes();
ModeCompat[] modeCompatArr = new ModeCompat[supportedModes.length];
Display.Mode mode = display.getMode();
Point currentDisplaySizeFromWorkarounds = DisplayCompat.getCurrentDisplaySizeFromWorkarounds(context, display);
if (currentDisplaySizeFromWorkarounds == null || physicalSizeEquals(mode, currentDisplaySizeFromWorkarounds)) {
for (int i = 0; i < supportedModes.length; i++) {
modeCompatArr[i] = new ModeCompat(supportedModes[i], physicalSizeEquals(supportedModes[i], mode));
}
} else {
for (int i2 = 0; i2 < supportedModes.length; i2++) {
if (physicalSizeEquals(supportedModes[i2], mode)) {
modeCompat = new ModeCompat(supportedModes[i2], currentDisplaySizeFromWorkarounds);
} else {
modeCompat = new ModeCompat(supportedModes[i2], false);
}
modeCompatArr[i2] = modeCompat;
}
}
return modeCompatArr;
}
static boolean isCurrentModeTheLargestMode(Display display) {
Display.Mode mode = display.getMode();
Display.Mode[] supportedModes = display.getSupportedModes();
for (int i = 0; i < supportedModes.length; i++) {
if (mode.getPhysicalHeight() < supportedModes[i].getPhysicalHeight() || mode.getPhysicalWidth() < supportedModes[i].getPhysicalWidth()) {
return false;
}
}
return true;
}
static boolean physicalSizeEquals(Display.Mode mode, Point point) {
return (mode.getPhysicalWidth() == point.x && mode.getPhysicalHeight() == point.y) || (mode.getPhysicalWidth() == point.y && mode.getPhysicalHeight() == point.x);
}
static boolean physicalSizeEquals(Display.Mode mode, Display.Mode mode2) {
return mode.getPhysicalWidth() == mode2.getPhysicalWidth() && mode.getPhysicalHeight() == mode2.getPhysicalHeight();
}
}
static class Api17Impl {
private Api17Impl() {
}
static void getRealSize(Display display, Point point) {
display.getRealSize(point);
}
}
public static final class ModeCompat {
private final boolean mIsNative;
private final Display.Mode mMode;
private final Point mPhysicalSize;
ModeCompat(Point point) {
Preconditions.checkNotNull(point, "physicalSize == null");
this.mPhysicalSize = point;
this.mMode = null;
this.mIsNative = true;
}
ModeCompat(Display.Mode mode, boolean z) {
Preconditions.checkNotNull(mode, "mode == null, can't wrap a null reference");
this.mPhysicalSize = new Point(mode.getPhysicalWidth(), mode.getPhysicalHeight());
this.mMode = mode;
this.mIsNative = z;
}
ModeCompat(Display.Mode mode, Point point) {
Preconditions.checkNotNull(mode, "mode == null, can't wrap a null reference");
Preconditions.checkNotNull(point, "physicalSize == null");
this.mPhysicalSize = point;
this.mMode = mode;
this.mIsNative = true;
}
public int getPhysicalWidth() {
return this.mPhysicalSize.x;
}
public int getPhysicalHeight() {
return this.mPhysicalSize.y;
}
@Deprecated
public boolean isNative() {
return this.mIsNative;
}
public Display.Mode toMode() {
return this.mMode;
}
}
}
Download file