package com.meizu.smartbar; import java.lang.reflect.Method; import android.app.Activity; import android.content.pm.ActivityInfo; import android.os.Build; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; /** * 调用 Build.hasSmartBar() 判断本机有无动态SmartBar。 */ public class ActionMenuItem extends Activity { private static final int SETTINGS_ID = Menu.FIRST; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (hasSmartBar()) { // 如有SmartBar,则使用拆分ActionBar,使MenuItem显示在底栏 getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW); } else { // 取消ActionBar拆分,使MenuItem显示在顶栏 getWindow().setUiOptions(0); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add(0, SETTINGS_ID, 0, "settings"); item.setIcon(R.drawable.ic_setting); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); return true; } private boolean hasSmartBar() { try { // 新型号可用反射调用Build.hasSmartBar() Method method = Class.forName("android.os.Build").getMethod("hasSmartBar"); return ((Boolean) method.invoke(null)).booleanValue(); } catch (Exception e) { } // 反射不到Build.hasSmartBar(),则用Build.DEVICE判断 if (Build.DEVICE.equals("mx2")) { return true; } else if (Build.DEVICE.equals("mx") || Build.DEVICE.equals("m9")) { return false; } return false; } }