Android: программно определить, есть ли у устройства аппаратное меню

В настоящее время я борюсь с этой проблемой. Мне нужно проверить, есть ли на устройстве, где установлено приложение, ключ аппаратного меню. Так как он не существует на некоторых устройствах, таких как Galaxy Nexus, я показываю его непосредственно в пользовательском интерфейсе в этом случае.

Я уже посмотрел PackageManager.hasSystemFeature (), но не нашел там ничего полезного.

Кто-нибудь уже это сделал?

Solutions Collecting From Web of "Android: программно определить, есть ли у устройства аппаратное меню"

ViewConfiguration.get(context).hasPermanentMenuKey() 

См. ViewConfiguration#hasPermanentMenuKey() для получения дополнительной информации. Обратите внимание, что это доступно только для уровня API 14+ (Android 4.0 Ice Cream Sandwich или новее).

 if(Build.VERSION.SDK_INT <= 10 || (Build.VERSION.SDK_INT >= 14 && ViewConfiguration.get(this).hasPermanentMenuKey())) { // menu key is present } else { //No menu key } 

Даже на устройствах, на которых работает Honeycomb, а затем система будет поставлять «кнопку меню» для приложений, написанных для версий 2. x Android. Только это называется «меню переполнения». Поэтому нет смысла проверять, будет ли такая кнопка или нет, она будет там, если это необходимо.

В качестве общего руководства вы должны проверить определенную функциональность, а не смотреть номера версий системы / API. Используйте класс ActionBar, если он доступен, в противном случае резервное копирование в меню опций 2.x.

Вы посмотрели учебник Google ? Это делает более ясным, что вы должны делать.

Я думаю, что возможным и лучшим решением является добавление собственной панели действий. Поэтому каждое устройство может его увидеть, и вам не нужно проверять конфигурацию аппаратного обеспечения или версию Api.

Keysoft qualifier используется для обнаружения аппаратной клавиатуры, а не панели навигации.

Эта статья решает это:

Проверить навигационную панель

Если вам нужен квалификатор ресурса, который может иметь место, так как вы хотите различать пользовательские интерфейсы, используйте keyssoft ресурсов keyssoft .