|
7 | 7 | import android.graphics.Color;
|
8 | 8 | import android.graphics.Point;
|
9 | 9 | import android.os.Build;
|
| 10 | +import android.provider.Settings; |
10 | 11 | import android.support.annotation.ColorInt;
|
11 | 12 | import android.support.annotation.NonNull;
|
12 | 13 | import android.support.annotation.RequiresApi;
|
13 | 14 | import android.support.annotation.RequiresPermission;
|
14 | 15 | import android.support.v4.widget.DrawerLayout;
|
| 16 | +import android.text.TextUtils; |
15 | 17 | import android.util.TypedValue;
|
16 | 18 | import android.view.Display;
|
17 | 19 | import android.view.KeyCharacterMap;
|
@@ -565,9 +567,26 @@ public static boolean isNavBarVisible(@NonNull final Window window) {
|
565 | 567 | }
|
566 | 568 | }
|
567 | 569 | if (isVisible) {
|
| 570 | + |
| 571 | + // 对于三星手机,android10以下非OneUI2的版本,比如 s8,note8 等设备上,导航栏显示存在bug:"当用户隐藏导航栏时显示输入法的时候导航栏会跟随显示",会导致隐藏输入法之后判断错误 |
| 572 | + // 这个问题在 OneUI 2 & android 10 版本已修复 |
| 573 | + String manufacturer = ""; |
| 574 | + if (!TextUtils.isEmpty(Build.MANUFACTURER )){ |
| 575 | + manufacturer = Build.MANUFACTURER.trim(); |
| 576 | + } |
| 577 | + if (manufacturer.toLowerCase().contains("samsung") |
| 578 | + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { |
| 579 | + try { |
| 580 | + return Settings.Global.getInt(window.getContext().getContentResolver(), "navigationbar_hide_bar_enabled") == 0; |
| 581 | + } catch (Exception e) { |
| 582 | + //nothing to do |
| 583 | + } |
| 584 | + } |
| 585 | + |
568 | 586 | int visibility = decorView.getSystemUiVisibility();
|
569 | 587 | isVisible = (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
|
570 | 588 | }
|
| 589 | + |
571 | 590 | return isVisible;
|
572 | 591 | }
|
573 | 592 |
|
|
0 commit comments