获取手机底部虚拟键盘的高度
魅族手机底部SmartBar高度

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Point;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewConfiguration;
import android.view.WindowManager;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();

                Log.e(MainActivity.class.getName(), "hasNavBar1 = " + hasNavBar(MainActivity.this));
            }
        });
        Log.e(MainActivity.class.getName(),"ScreenHeight = "+getScreenHight());
        Log.e(MainActivity.class.getName(),"SmartBarHeight = "+getSmartBarHeight(this));
        Log.e(MainActivity.class.getName(),"hasNavBar = "+hasNavBar(this));

        Log.e(MainActivity.class.getName(),"getNavigationBarHeight = "+getNavigationBarHeight(this));
    }


    private int getScreenHight(){
        // 获取屏幕高
        Point point = new Point();
        getWindowManager().getDefaultDisplay().getSize(point);
        int screenHeight = point.y + (isMeizu() ? 0 : getNavigationBarHeight(this));

        return screenHeight;
    }

    /**
     * 获取虚拟按键栏高度
     * @param context
     * @return
     */
    public static int getNavigationBarHeight(Context context) {
        int result = 0;
        if (hasNavBar(context)){
            Resources res = context.getResources();
            int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android");
            if (resourceId > 0) {
                result = res.getDimensionPixelSize(resourceId);
            }
        }
        return result;
    }

    /**
     * 检查是否存在虚拟按键栏
     * @param context
     * @return
     */
    private static boolean hasNavBar(Context context) {
        Resources res = context.getResources();
        int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android");
        if (resourceId != 0) {
            boolean hasNav = res.getBoolean(resourceId);
            // check override flag
            String sNavBarOverride = getNavBarOverride();
            if ("1".equals(sNavBarOverride)) {
                hasNav = false;
            } else if ("0".equals(sNavBarOverride)) {
                hasNav = true;
            }
            return hasNav;
        } else { // fallback
            return !ViewConfiguration.get(context).hasPermanentMenuKey();
        }
    }


    /**
     * 判断虚拟按键栏是否重写
     * @return
     */
    private static String getNavBarOverride() {
        String sNavBarOverride = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            try {
                Class c = Class.forName("android.os.SystemProperties");
                Method m = c.getDeclaredMethod("get", String.class);
                m.setAccessible(true);
                sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");
            } catch (Throwable e) {
            }
        }
        return sNavBarOverride;
    }


    /**
     * 判断是否meizu手机
     * @return
     */
    public static boolean isMeizu() {
        return Build.BRAND.equals("Meizu");
    }


    /**
     * 获取魅族手机底部虚拟键盘高度
     * @param context
     * @return
     */
    public static int getSmartBarHeight(Context context)
    {
        try {
            Class c = Class.forName("com.android.internal.R$dimen");
            Object obj = c.newInstance();
            Field field = c.getField("mz_action_button_min_height");
            int height = Integer.parseInt(field.get(obj).toString());
            return context.getResources().getDimensionPixelSize(height);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }
}
<td id="file-smartbarutils-java-LC4" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">java.lang.reflect.InvocationTargetException</span>;
</td>
<td id="file-smartbarutils-java-LC5" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">java.lang.reflect.Method</span>;
</td>
<td id="file-smartbarutils-java-LC6" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC7" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.app.ActionBar</span>;
</td>
<td id="file-smartbarutils-java-LC8" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.content.Context</span>;
</td>
<td id="file-smartbarutils-java-LC9" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.content.res.Configuration</span>;
</td>
<td id="file-smartbarutils-java-LC10" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.os.Build</span>;
</td>
<td id="file-smartbarutils-java-LC11" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.support.v4.app.FragmentActivity</span>;
</td>
<td id="file-smartbarutils-java-LC12" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.view.View</span>;
</td>
<td id="file-smartbarutils-java-LC13" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.view.Window</span>;
</td>
<td id="file-smartbarutils-java-LC14" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">import</span> <span class="pl-smi">android.view.WindowManager</span>;
</td>
<td id="file-smartbarutils-java-LC15" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC16" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">SmartBarUtils</span> {
</td>
<td id="file-smartbarutils-java-LC17" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC18" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">final</span> <span class="pl-k">int</span> <span class="pl-c1">SMART_BAR_HEIGH</span> <span class="pl-k">=</span> <span class="pl-c1">96</span>;
</td>
<td id="file-smartbarutils-java-LC19" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC20" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC21" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 调用 ActionBar.setTabsShowAtBottom(boolean) 方法。 如果</span>
</td>
<td id="file-smartbarutils-java-LC22" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * android:uiOptions=&#8221;splitActionBarWhenNarrow&#8221;,则可设置ActionBar Tabs显示在底栏。</span>
</td>
<td id="file-smartbarutils-java-LC23" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC24" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 示例: public class MyActivity extends Activity implements</span>
</td>
<td id="file-smartbarutils-java-LC25" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * ActionBar.TabListener { protected void onCreate(Bundle</span>
</td>
<td id="file-smartbarutils-java-LC26" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * savedInstanceState) { super.onCreate(savedInstanceState); &#8230;</span>
</td>
<td id="file-smartbarutils-java-LC27" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC28" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * final ActionBar bar = getActionBar();</span>
</td>
<td id="file-smartbarutils-java-LC29" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);</span>
</td>
<td id="file-smartbarutils-java-LC30" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * SmartBarUtils.setActionBarTabsShowAtBottom(bar, true);</span>
</td>
<td id="file-smartbarutils-java-LC31" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC32" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * bar.addTab(bar.newTab().setText(&quot;tab1&quot;).setTabListener(this));</span>
</td>
<td id="file-smartbarutils-java-LC33" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * &#8230; } }</span>
</td>
<td id="file-smartbarutils-java-LC34" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC35" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC36" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">setActionBarTabsShowAtBottom</span>(<span class="pl-smi">ActionBar</span> <span class="pl-v">actionbar</span>,
</td>
<td id="file-smartbarutils-java-LC37" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">boolean</span> <span class="pl-v">showAtBottom</span>) {
</td>
<td id="file-smartbarutils-java-LC38" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC39" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">Method</span> method <span class="pl-k">=</span> <span class="pl-smi">Class</span><span class="pl-k">.</span>forName(<span class="pl-s"><span class="pl-pds">&#8220;</span>android.app.ActionBar<span class="pl-pds">&#8220;</span></span>)<span class="pl-k">.</span>getMethod(
</td>
<td id="file-smartbarutils-java-LC40" class="blob-code blob-code-inner js-file-line">
  <span class="pl-s"><span class="pl-pds">&#8220;</span>setTabsShowAtBottom<span class="pl-pds">&#8220;</span></span>, <span class="pl-k">new</span> <span class="pl-smi">Class</span>[] { <span class="pl-k">boolean</span><span class="pl-k">.</span>class });
</td>
<td id="file-smartbarutils-java-LC41" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC42" class="blob-code blob-code-inner js-file-line">
  method<span class="pl-k">.</span>invoke(actionbar, showAtBottom);
</td>
<td id="file-smartbarutils-java-LC43" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalArgumentException</span> e) {
</td>
<td id="file-smartbarutils-java-LC44" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC45" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalAccessException</span> e) {
</td>
<td id="file-smartbarutils-java-LC46" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC47" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">InvocationTargetException</span> e) {
</td>
<td id="file-smartbarutils-java-LC48" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC49" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC50" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">SecurityException</span> e) {
</td>
<td id="file-smartbarutils-java-LC51" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC52" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">NoSuchMethodException</span> e) {
</td>
<td id="file-smartbarutils-java-LC53" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC54" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">ClassNotFoundException</span> e) {
</td>
<td id="file-smartbarutils-java-LC55" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC56" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC57" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC58" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC59" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC60" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 调用 ActionBar.setActionBarViewCollapsable(boolean) 方法。</span>
</td>
<td id="file-smartbarutils-java-LC61" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 设置ActionBar顶栏无显示内容时是否隐藏。</span>
</td>
<td id="file-smartbarutils-java-LC62" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC63" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 示例:</span>
</td>
<td id="file-smartbarutils-java-LC64" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC65" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * public class MyActivity extends Activity {</span>
</td>
<td id="file-smartbarutils-java-LC66" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC67" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * protected void onCreate(Bundle savedInstanceState) {</span>
</td>
<td id="file-smartbarutils-java-LC68" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * super.onCreate(savedInstanceState); &#8230;</span>
</td>
<td id="file-smartbarutils-java-LC69" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC70" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * final ActionBar bar = getActionBar();</span>
</td>
<td id="file-smartbarutils-java-LC71" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC72" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * // 调用setActionBarViewCollapsable,并设置ActionBar没有显示内容,则ActionBar顶栏不显示</span>
</td>
<td id="file-smartbarutils-java-LC73" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * SmartBarUtils.setActionBarViewCollapsable(bar, true);</span>
</td>
<td id="file-smartbarutils-java-LC74" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * bar.setDisplayOptions(0); } }</span>
</td>
<td id="file-smartbarutils-java-LC75" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC76" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">setActionBarViewCollapsable</span>(<span class="pl-smi">ActionBar</span> <span class="pl-v">actionbar</span>,
</td>
<td id="file-smartbarutils-java-LC77" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">boolean</span> <span class="pl-v">collapsable</span>) {
</td>
<td id="file-smartbarutils-java-LC78" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC79" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">Method</span> method <span class="pl-k">=</span> <span class="pl-smi">Class</span><span class="pl-k">.</span>forName(<span class="pl-s"><span class="pl-pds">&#8220;</span>android.app.ActionBar<span class="pl-pds">&#8220;</span></span>)<span class="pl-k">.</span>getMethod(
</td>
<td id="file-smartbarutils-java-LC80" class="blob-code blob-code-inner js-file-line">
  <span class="pl-s"><span class="pl-pds">&#8220;</span>setActionBarViewCollapsable<span class="pl-pds">&#8220;</span></span>,
</td>
<td id="file-smartbarutils-java-LC81" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">new</span> <span class="pl-smi">Class</span>[] { <span class="pl-k">boolean</span><span class="pl-k">.</span>class });
</td>
<td id="file-smartbarutils-java-LC82" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC83" class="blob-code blob-code-inner js-file-line">
  method<span class="pl-k">.</span>invoke(actionbar, collapsable);
</td>
<td id="file-smartbarutils-java-LC84" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalArgumentException</span> e) {
</td>
<td id="file-smartbarutils-java-LC85" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC86" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalAccessException</span> e) {
</td>
<td id="file-smartbarutils-java-LC87" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC88" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">InvocationTargetException</span> e) {
</td>
<td id="file-smartbarutils-java-LC89" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC90" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC91" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">SecurityException</span> e) {
</td>
<td id="file-smartbarutils-java-LC92" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC93" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">NoSuchMethodException</span> e) {
</td>
<td id="file-smartbarutils-java-LC94" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC95" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">ClassNotFoundException</span> e) {
</td>
<td id="file-smartbarutils-java-LC96" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC97" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC98" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC99" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC100" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC101" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 调用 ActionBar.setActionModeHeaderHidden(boolean) 方法。 设置ActionMode顶栏是否隐藏。</span>
</td>
<td id="file-smartbarutils-java-LC102" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC103" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * public class MyActivity extends Activity {</span>
</td>
<td id="file-smartbarutils-java-LC104" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC105" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * protected void onCreate(Bundle savedInstanceState) {</span>
</td>
<td id="file-smartbarutils-java-LC106" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * super.onCreate(savedInstanceState); &#8230;</span>
</td>
<td id="file-smartbarutils-java-LC107" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC108" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * final ActionBar bar = getActionBar();</span>
</td>
<td id="file-smartbarutils-java-LC109" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC110" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * // ActionBar转为ActionMode时,不显示ActionMode顶栏</span>
</td>
<td id="file-smartbarutils-java-LC111" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * SmartBarUtils.setActionModeHeaderHidden(bar, true); } }</span>
</td>
<td id="file-smartbarutils-java-LC112" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC113" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">setActionModeHeaderHidden</span>(<span class="pl-smi">ActionBar</span> <span class="pl-v">actionbar</span>,
</td>
<td id="file-smartbarutils-java-LC114" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">boolean</span> <span class="pl-v">hidden</span>) {
</td>
<td id="file-smartbarutils-java-LC115" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC116" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">Method</span> method <span class="pl-k">=</span> <span class="pl-smi">Class</span><span class="pl-k">.</span>forName(<span class="pl-s"><span class="pl-pds">&#8220;</span>android.app.ActionBar<span class="pl-pds">&#8220;</span></span>)<span class="pl-k">.</span>getMethod(
</td>
<td id="file-smartbarutils-java-LC117" class="blob-code blob-code-inner js-file-line">
  <span class="pl-s"><span class="pl-pds">&#8220;</span>setActionModeHeaderHidden<span class="pl-pds">&#8220;</span></span>, <span class="pl-k">new</span> <span class="pl-smi">Class</span>[] { <span class="pl-k">boolean</span><span class="pl-k">.</span>class });
</td>
<td id="file-smartbarutils-java-LC118" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC119" class="blob-code blob-code-inner js-file-line">
  method<span class="pl-k">.</span>invoke(actionbar, hidden);
</td>
<td id="file-smartbarutils-java-LC120" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalArgumentException</span> e) {
</td>
<td id="file-smartbarutils-java-LC121" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC122" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalAccessException</span> e) {
</td>
<td id="file-smartbarutils-java-LC123" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC124" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">InvocationTargetException</span> e) {
</td>
<td id="file-smartbarutils-java-LC125" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC126" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC127" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">SecurityException</span> e) {
</td>
<td id="file-smartbarutils-java-LC128" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC129" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">NoSuchMethodException</span> e) {
</td>
<td id="file-smartbarutils-java-LC130" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC131" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">ClassNotFoundException</span> e) {
</td>
<td id="file-smartbarutils-java-LC132" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC133" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC134" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC135" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC136" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC137" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 原隐藏SmartBar的方法</span>
</td>
<td id="file-smartbarutils-java-LC138" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 此方法已从Flyme2.4.1开始失效 示例:</span>
</td>
<td id="file-smartbarutils-java-LC139" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC140" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * final ActionBar actionBar = getActionBar(); SmartBarUtils.hide(this);</span>
</td>
<td id="file-smartbarutils-java-LC141" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC142" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC143" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">@Deprecated</span>
</td>
<td id="file-smartbarutils-java-LC144" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">final</span> <span class="pl-k">void</span> <span class="pl-en">hide</span>(<span class="pl-smi">FragmentActivity</span> <span class="pl-v">activity</span>) {
</td>
<td id="file-smartbarutils-java-LC145" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">ActionBar</span> actionBar <span class="pl-k">=</span> activity<span class="pl-k">.</span>getActionBar();
</td>
<td id="file-smartbarutils-java-LC146" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">if</span> (actionBar <span class="pl-k">==</span> <span class="pl-c1">null</span>) {
</td>
<td id="file-smartbarutils-java-LC147" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span>;
</td>
<td id="file-smartbarutils-java-LC148" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC149" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">Class<? extends <span class="pl-smi">ActionBar</span>></span> <span class="pl-smi">ActionBarClass</span> <span class="pl-k">=</span> actionBar<span class="pl-k">.</span>getClass();
</td>
<td id="file-smartbarutils-java-LC150" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">Method</span> setTabsShowAtBottom;
</td>
<td id="file-smartbarutils-java-LC151" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC152" class="blob-code blob-code-inner js-file-line">
  setTabsShowAtBottom <span class="pl-k">=</span> <span class="pl-smi">ActionBarClass</span><span class="pl-k">.</span>getMethod(
</td>
<td id="file-smartbarutils-java-LC153" class="blob-code blob-code-inner js-file-line">
  <span class="pl-s"><span class="pl-pds">&#8220;</span>setTabsShowAtBottom<span class="pl-pds">&#8220;</span></span>, <span class="pl-smi">Boolean</span><span class="pl-c1"><span class="pl-k">.</span>TYPE</span>);
</td>
<td id="file-smartbarutils-java-LC154" class="blob-code blob-code-inner js-file-line">
  setTabsShowAtBottom<span class="pl-k">.</span>invoke(activity<span class="pl-k">.</span>getActionBar(), <span class="pl-c1">true</span>);
</td>
<td id="file-smartbarutils-java-LC155" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">NoSuchMethodException</span> e) {
</td>
<td id="file-smartbarutils-java-LC156" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC157" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalArgumentException</span> e) {
</td>
<td id="file-smartbarutils-java-LC158" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC159" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">IllegalAccessException</span> e) {
</td>
<td id="file-smartbarutils-java-LC160" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC161" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">InvocationTargetException</span> e) {
</td>
<td id="file-smartbarutils-java-LC162" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC163" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC164" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC165" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC166" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC167" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 以下三个方法原作者为c跳跳(http://weibo.com/u/1698085875),</span>
</td>
<td id="file-smartbarutils-java-LC168" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 由Shawn(http://weibo.com/linshen2011)在其基础上改进了一种判断SmartBar是否存在的方法,</span>
</td>
<td id="file-smartbarutils-java-LC169" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 注意该方法反射的接口只存在于2013年6月之后魅族的flyme固件中</span>
</td>
<td id="file-smartbarutils-java-LC170" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC171" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC172" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC173" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 方法一:uc等在使用的方法(新旧版flyme均有效),</span>
</td>
<td id="file-smartbarutils-java-LC174" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 此方法需要配合requestWindowFeature(Window.FEATURE_NO_TITLE</span>
</td>
<td id="file-smartbarutils-java-LC175" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * )使用,缺点是程序无法使用系统actionbar</span>
</td>
<td id="file-smartbarutils-java-LC176" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC177" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * @param decorView</span>
</td>
<td id="file-smartbarutils-java-LC178" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * window.getDecorView</span>
</td>
<td id="file-smartbarutils-java-LC179" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC180" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">hide</span>(<span class="pl-smi">View</span> <span class="pl-v">decorView</span>) {
</td>
<td id="file-smartbarutils-java-LC181" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">if</span> (<span class="pl-k">!</span>hasSmartBar())
</td>
<td id="file-smartbarutils-java-LC182" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span>;
</td>
<td id="file-smartbarutils-java-LC183" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC184" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC185" class="blob-code blob-code-inner js-file-line">
  @SuppressWarnings(<span class="pl-s"><span class="pl-pds">&#8220;</span>rawtypes<span class="pl-pds">&#8220;</span></span>)
</td>
<td id="file-smartbarutils-java-LC186" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">Class</span>[] arrayOfClass <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-smi">Class</span>[<span class="pl-c1">1</span>];
</td>
<td id="file-smartbarutils-java-LC187" class="blob-code blob-code-inner js-file-line">
  arrayOfClass[<span class="pl-c1"></span>] <span class="pl-k">=</span> <span class="pl-smi">Integer</span><span class="pl-c1"><span class="pl-k">.</span>TYPE</span>;
</td>
<td id="file-smartbarutils-java-LC188" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">Method</span> localMethod <span class="pl-k">=</span> <span class="pl-smi">View</span><span class="pl-k">.</span>class<span class="pl-k">.</span>getMethod(<span class="pl-s"><span class="pl-pds">&#8220;</span>setSystemUiVisibility<span class="pl-pds">&#8220;</span></span>,
</td>
<td id="file-smartbarutils-java-LC189" class="blob-code blob-code-inner js-file-line">
  arrayOfClass);
</td>
<td id="file-smartbarutils-java-LC190" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">Field</span> localField <span class="pl-k">=</span> <span class="pl-smi">View</span><span class="pl-k">.</span>class
</td>
<td id="file-smartbarutils-java-LC191" class="blob-code blob-code-inner js-file-line">
  .getField(<span class="pl-s"><span class="pl-pds">&#8220;</span>SYSTEM_UI_FLAG_HIDE_NAVIGATION<span class="pl-pds">&#8220;</span></span>);
</td>
<td id="file-smartbarutils-java-LC192" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">Object</span>[] arrayOfObject <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-smi">Object</span>[<span class="pl-c1">1</span>];
</td>
<td id="file-smartbarutils-java-LC193" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC194" class="blob-code blob-code-inner js-file-line">
  arrayOfObject[<span class="pl-c1"></span>] <span class="pl-k">=</span> localField<span class="pl-k">.</span>get(<span class="pl-c1">null</span>);
</td>
<td id="file-smartbarutils-java-LC195" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">Exception</span> e) {
</td>
<td id="file-smartbarutils-java-LC196" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC197" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC198" class="blob-code blob-code-inner js-file-line">
  localMethod<span class="pl-k">.</span>invoke(decorView, arrayOfObject);
</td>
<td id="file-smartbarutils-java-LC199" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span>;
</td>
<td id="file-smartbarutils-java-LC200" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">Exception</span> e) {
</td>
<td id="file-smartbarutils-java-LC201" class="blob-code blob-code-inner js-file-line">
  e<span class="pl-k">.</span>printStackTrace();
</td>
<td id="file-smartbarutils-java-LC202" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC203" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC204" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC205" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC206" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 方法二:此方法需要配合requestWindowFeature(Window.FEATURE_NO_TITLE)使用</span>
</td>
<td id="file-smartbarutils-java-LC207" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * ,缺点是程序无法使用系统actionbar</span>
</td>
<td id="file-smartbarutils-java-LC208" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC209" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * @param context</span>
</td>
<td id="file-smartbarutils-java-LC210" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * @param window</span>
</td>
<td id="file-smartbarutils-java-LC211" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC212" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">hide</span>(<span class="pl-smi">Context</span> <span class="pl-v">context</span>, <span class="pl-smi">Window</span> <span class="pl-v">window</span>) {
</td>
<td id="file-smartbarutils-java-LC213" class="blob-code blob-code-inner js-file-line">
  hide(context, window, <span class="pl-c1"></span>);
</td>
<td id="file-smartbarutils-java-LC214" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC215" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC216" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">private</span> <span class="pl-k">static</span> <span class="pl-k">int</span> <span class="pl-en">getStatusBarHeight</span>(<span class="pl-smi">Context</span> <span class="pl-v">context</span>) {
</td>
<td id="file-smartbarutils-java-LC217" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">int</span> result <span class="pl-k">=</span> <span class="pl-c1"></span>;
</td>
<td id="file-smartbarutils-java-LC218" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">int</span> resourceId <span class="pl-k">=</span> context<span class="pl-k">.</span>getResources()<span class="pl-k">.</span>getIdentifier(
</td>
<td id="file-smartbarutils-java-LC219" class="blob-code blob-code-inner js-file-line">
  <span class="pl-s"><span class="pl-pds">&#8220;</span>status_bar_height<span class="pl-pds">&#8220;</span></span>, <span class="pl-s"><span class="pl-pds">&#8220;</span>dimen<span class="pl-pds">&#8220;</span></span>, <span class="pl-s"><span class="pl-pds">&#8220;</span>android<span class="pl-pds">&#8220;</span></span>);
</td>
<td id="file-smartbarutils-java-LC220" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">if</span> (resourceId <span class="pl-k">></span> <span class="pl-c1"></span>) {
</td>
<td id="file-smartbarutils-java-LC221" class="blob-code blob-code-inner js-file-line">
  result <span class="pl-k">=</span> context<span class="pl-k">.</span>getResources()<span class="pl-k">.</span>getDimensionPixelSize(resourceId);
</td>
<td id="file-smartbarutils-java-LC222" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC223" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span> result;
</td>
<td id="file-smartbarutils-java-LC224" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC225" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC226" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC227" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 方法三:需要使用顶部actionbar的应用请使用此方法</span>
</td>
<td id="file-smartbarutils-java-LC228" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * </span>
</td>
<td id="file-smartbarutils-java-LC229" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * @param context</span>
</td>
<td id="file-smartbarutils-java-LC230" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * @param window</span>
</td>
<td id="file-smartbarutils-java-LC231" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * @param smartBarHeight</span>
</td>
<td id="file-smartbarutils-java-LC232" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * set SmartBarUtils.SMART_BAR_HEIGHT_PIXEL</span>
</td>
<td id="file-smartbarutils-java-LC233" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC234" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">hide</span>(<span class="pl-smi">Context</span> <span class="pl-v">context</span>, <span class="pl-smi">Window</span> <span class="pl-v">window</span>, <span class="pl-k">int</span> <span class="pl-v">smartBarHeight</span>) {
</td>
<td id="file-smartbarutils-java-LC235" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">if</span> (<span class="pl-k">!</span>hasSmartBar()) {
</td>
<td id="file-smartbarutils-java-LC236" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span>;
</td>
<td id="file-smartbarutils-java-LC237" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC238" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">if</span> (context<span class="pl-k">.</span>getResources()<span class="pl-k">.</span>getConfiguration()<span class="pl-k">.</span>orientation <span class="pl-k">==</span> <span class="pl-smi">Configuration</span><span class="pl-c1"><span class="pl-k">.</span>ORIENTATION_LANDSCAPE</span>) {
</td>
<td id="file-smartbarutils-java-LC239" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span>;
</td>
<td id="file-smartbarutils-java-LC240" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC241" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC242" class="blob-code blob-code-inner js-file-line">
  window<span class="pl-k">.</span>setFlags(<span class="pl-smi">WindowManager</span><span class="pl-k">.</span><span class="pl-smi">LayoutParams</span><span class="pl-c1"><span class="pl-k">.</span>FLAG_FULLSCREEN</span>,
</td>
<td id="file-smartbarutils-java-LC243" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">WindowManager</span><span class="pl-k">.</span><span class="pl-smi">LayoutParams</span><span class="pl-c1"><span class="pl-k">.</span>FLAG_FULLSCREEN</span>);
</td>
<td id="file-smartbarutils-java-LC244" class="blob-code blob-code-inner js-file-line">
  window<span class="pl-k">.</span>addFlags(<span class="pl-smi">WindowManager</span><span class="pl-k">.</span><span class="pl-smi">LayoutParams</span><span class="pl-c1"><span class="pl-k">.</span>FLAG_FORCE_NOT_FULLSCREEN</span>);
</td>
<td id="file-smartbarutils-java-LC245" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">int</span> statusBarHeight <span class="pl-k">=</span> getStatusBarHeight(context);
</td>
<td id="file-smartbarutils-java-LC246" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC247" class="blob-code blob-code-inner js-file-line">
  window<span class="pl-k">.</span>getDecorView()
</td>
<td id="file-smartbarutils-java-LC248" class="blob-code blob-code-inner js-file-line">
  .setPadding(<span class="pl-c1"></span>, statusBarHeight, <span class="pl-c1"></span>, <span class="pl-k">&#8211;</span>smartBarHeight);
</td>
<td id="file-smartbarutils-java-LC249" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC250" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC251" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c">/**</span>
</td>
<td id="file-smartbarutils-java-LC252" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * 新型号可用反射调用Build.hasSmartBar()来判断有无SmartBar</span>
</td>
<td id="file-smartbarutils-java-LC253" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> * @return</span>
</td>
<td id="file-smartbarutils-java-LC254" class="blob-code blob-code-inner js-file-line">
  <span class="pl-c"> */</span>
</td>
<td id="file-smartbarutils-java-LC255" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">boolean</span> <span class="pl-en">hasSmartBar</span>() {
</td>
<td id="file-smartbarutils-java-LC256" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">try</span> {
</td>
<td id="file-smartbarutils-java-LC257" class="blob-code blob-code-inner js-file-line">
  <span class="pl-smi">Method</span> method <span class="pl-k">=</span> <span class="pl-smi">Class</span><span class="pl-k">.</span>forName(<span class="pl-s"><span class="pl-pds">&#8220;</span>android.os.Build<span class="pl-pds">&#8220;</span></span>)<span class="pl-k">.</span>getMethod(
</td>
<td id="file-smartbarutils-java-LC258" class="blob-code blob-code-inner js-file-line">
  <span class="pl-s"><span class="pl-pds">&#8220;</span>hasSmartBar<span class="pl-pds">&#8220;</span></span>);
</td>
<td id="file-smartbarutils-java-LC259" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span> ((<span class="pl-smi">Boolean</span>) method<span class="pl-k">.</span>invoke(<span class="pl-c1">null</span>))<span class="pl-k">.</span>booleanValue();
</td>
<td id="file-smartbarutils-java-LC260" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">catch</span> (<span class="pl-smi">Exception</span> e) {
</td>
<td id="file-smartbarutils-java-LC261" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC262" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC263" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">if</span> (<span class="pl-smi">Build</span><span class="pl-c1"><span class="pl-k">.</span>DEVICE</span><span class="pl-k">.</span>equals(<span class="pl-s"><span class="pl-pds">&#8220;</span>mx2<span class="pl-pds">&#8220;</span></span>)) {
</td>
<td id="file-smartbarutils-java-LC264" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span> <span class="pl-c1">true</span>;
</td>
<td id="file-smartbarutils-java-LC265" class="blob-code blob-code-inner js-file-line">
  } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">Build</span><span class="pl-c1"><span class="pl-k">.</span>DEVICE</span><span class="pl-k">.</span>equals(<span class="pl-s"><span class="pl-pds">&#8220;</span>mx<span class="pl-pds">&#8220;</span></span>) <span class="pl-k">||</span> <span class="pl-smi">Build</span><span class="pl-c1"><span class="pl-k">.</span>DEVICE</span><span class="pl-k">.</span>equals(<span class="pl-s"><span class="pl-pds">&#8220;</span>m9<span class="pl-pds">&#8220;</span></span>)) {
</td>
<td id="file-smartbarutils-java-LC266" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span> <span class="pl-c1">false</span>;
</td>
<td id="file-smartbarutils-java-LC267" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC268" class="blob-code blob-code-inner js-file-line">
  <span class="pl-k">return</span> <span class="pl-c1">false</span>;
</td>
<td id="file-smartbarutils-java-LC269" class="blob-code blob-code-inner js-file-line">
  }
</td>
<td id="file-smartbarutils-java-LC270" class="blob-code blob-code-inner js-file-line">
</td>
<td id="file-smartbarutils-java-LC271" class="blob-code blob-code-inner js-file-line">
  }
</td>
import java.lang.reflect.Field;