Android: программно определить, есть ли на устройстве аппаратная кнопка меню - PullRequest
42 голосов
/ 28 января 2012

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

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

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

Ответы [ 6 ]

92 голосов
/ 28 февраля 2012
ViewConfiguration.get(context).hasPermanentMenuKey()

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

23 голосов
/ 13 июня 2013
if(Build.VERSION.SDK_INT <= 10 || (Build.VERSION.SDK_INT >= 14 &&    
                              ViewConfiguration.get(this).hasPermanentMenuKey()))
{
   // menu key is present
}
else
{
  //No menu key
}
3 голосов
/ 29 января 2012

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

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

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

1 голос
/ 06 сентября 2014
Определитель

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

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

Проверка панели навигации

1 голос
/ 17 ноября 2012

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

0 голосов
/ 12 ноября 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...