/**
* 修復透明+轉向的Android8.0系統 BUG
*/
private void fixOnlyFullscreen(){
if (Build.VERSION.SDK_INT == 26 && isTranslucentOrFloating()) {
fixOrientation(this);
}
}
/**
* hook反射方向檢查
**/
private static void fixOrientation(Activity activity) {
try {
Class activityClass = Activity.class;
Field mActivityInfoField = activityClass.getDeclaredField("mActivityInfo");
mActivityInfoField.setAccessible(true);
ActivityInfo activityInfo = (ActivityInfo) mActivityInfoField.get(activity);
//設置屏幕不固定
activityInfo.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
} catch (Exception e) {
}
}
/**
* hook反射檢查是否透明色或者懸浮
**/
private boolean isTranslucentOrFloating() {
boolean isTranslucentOrFloating = false;
try {
int[] styleableRes = (int[]) Class.forName("com.android.internal.R$styleable").getField("Window").get(null);
final TypedArray typedArray = obtainStyledAttributes(styleableRes);
Method method = ActivityInfo.class.getMethod("isTranslucentOrFloating", TypedArray.class);
method.setAccessible(true);
isTranslucentOrFloating = (boolean) method.invoke(null, typedArray);
method.setAccessible(false);
} catch (Exception e) {
}
return isTranslucentOrFloating;
}
修復Android8.0系統BUG導致透明度+轉向崩潰
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.