package com.fwupgrade.saymanss.utils;
|
|
import android.annotation.SuppressLint;
|
import android.annotation.TargetApi;
|
import android.app.Activity;
|
import android.app.ActivityManager;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.pm.PackageManager;
|
import android.content.res.Configuration;
|
import android.graphics.Point;
|
import android.os.Build;
|
import android.provider.MediaStore;
|
import android.support.annotation.Nullable;
|
import android.telephony.TelephonyManager;
|
import android.util.DisplayMetrics;
|
import android.view.Display;
|
import android.view.View;
|
import android.view.Window;
|
import android.view.WindowManager;
|
|
|
import com.fwupgrade.saymanss.R;
|
|
import java.lang.reflect.Field;
|
import java.lang.reflect.Method;
|
import java.util.Locale;
|
|
|
/**
|
* Utility class for getting system information.
|
*/
|
public final class SystemUtil {
|
/**
|
* Hide default constructor.
|
*/
|
private SystemUtil() {
|
throw new UnsupportedOperationException();
|
}
|
|
/**
|
* Get information if Android version is Kitkat (4.4).
|
*
|
* @return true if Kitkat.
|
*/
|
public static boolean isKitkat() {
|
return Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT;
|
}
|
|
/**
|
* Get information if Android version is Lollipop (5.0) or higher.
|
*
|
* @return true if Lollipop or higher.
|
*/
|
public static boolean isAndroid5() {
|
return isAtLeastVersion(Build.VERSION_CODES.LOLLIPOP);
|
}
|
|
/**
|
* Check if Android version is at least the given version.
|
*
|
* @param version The version
|
* @return true if Android version is at least the given version
|
*/
|
public static boolean isAtLeastVersion(final int version) {
|
return Build.VERSION.SDK_INT >= version;
|
}
|
|
|
public static void setStatusBarColor(Activity activity) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = activity.getWindow();
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
window.setStatusBarColor(activity.getResources().getColor(R.color.apptakeaction));
|
}
|
}
|
|
/**
|
* 设置状态栏图标为深色和魅族特定的文字风格,Flyme4.0以上
|
* 可以用来判断是否为Flyme用户
|
* @param window 需要设置的窗口
|
* @param dark 是否把状态栏字体及图标颜色设置为深色
|
* @return boolean 成功执行返回true
|
*
|
*/
|
public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) {
|
boolean result = false;
|
if (window != null) {
|
try {
|
WindowManager.LayoutParams lp = window.getAttributes();
|
Field darkFlag = WindowManager.LayoutParams.class
|
.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");
|
Field meizuFlags = WindowManager.LayoutParams.class
|
.getDeclaredField("meizuFlags");
|
darkFlag.setAccessible(true);
|
meizuFlags.setAccessible(true);
|
int bit = darkFlag.getInt(null);
|
int value = meizuFlags.getInt(lp);
|
if (dark) {
|
value |= bit;
|
} else {
|
value &= ~bit;
|
}
|
meizuFlags.setInt(lp, value);
|
window.setAttributes(lp);
|
result = true;
|
} catch (Exception e) {
|
|
}
|
}
|
return result;
|
}
|
|
/**
|
* 设置状态栏字体图标为深色,需要MIUIV6以上
|
* @param window 需要设置的窗口
|
* @param dark 是否把状态栏字体及图标颜色设置为深色
|
* @return boolean 成功执行返回true
|
*
|
*/
|
public static boolean MIUISetStatusBarLightMode(Window window, boolean dark) {
|
boolean result = false;
|
if (window != null) {
|
Class clazz = window.getClass();
|
try {
|
int darkModeFlag = 0;
|
Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");
|
Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
|
darkModeFlag = field.getInt(layoutParams);
|
Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);
|
if(dark){
|
extraFlagField.invoke(window,darkModeFlag,darkModeFlag);//状态栏透明且黑色字体
|
}else{
|
extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体
|
}
|
result=true;
|
}catch (Exception e){
|
|
}
|
}
|
return result;
|
}
|
|
// /**
|
// * Get information if this is one of JE's devices.
|
// *
|
// * @return true if one of JE's devices.
|
// */
|
// public static boolean isJeDevice() {
|
// String[] jeDevices = WDApplication.getInstance().getResources().getStringArray(R.array.private_je_devices);
|
//
|
// try {
|
// return Arrays.asList(jeDevices).contains(getDeviceId());
|
// }
|
// catch (SecurityException e) {
|
// return false;
|
// }
|
// }
|
}
|