43 votes

Android: détecter par programme si le périphérique a un bouton de menu matériel

Je suis actuellement aux prises avec ce problème. Je dois vérifier si le périphérique sur lequel l'application est installée dispose d'une touche de menu matériel. Parce qu'il n'existe pas sur certains appareils comme Galaxy Nexus, je le montre directement dans l'interface utilisateur dans ce cas.

J'ai déjà regardé PackageManager.hasSystemFeature (), mais je n'ai rien trouvé d'utile là-bas.

Est-ce que quelqu'un a déjà fait ça?

92voto

fhucho Points 8964
ViewConfiguration.get(context).hasPermanentMenuKey()

23voto

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

3voto

Même sur les appareils fonctionnant en Nid d'abeille et plus tard, le système fournit un "bouton de Menu" pour les applications écrites pour les 2.x versions d'Android. Seulement, il est appelé le "menu contextuel". Donc il n'y a pas de point de vérifier si il y aura un bouton de ce type ou pas-il sera là en cas de besoin.

En règle générale, vous devriez vérifier pour des fonctionnalités spécifiques, regarde pas le système/API numéros de version. Utiliser la classe ActionBar si elle est disponible, sinon repli de l'2.x les options de menu.

Avez-vous regardé Google de l'action-bar tutoriel? Qui le rend plus claire de ce que vous devriez faire.

1voto

kinghomer Points 1356

Je pense qu'une solution possible et meilleure consiste à ajouter une barre d'action propre. Ainsi, chaque appareil peut le voir et vous n'avez pas à vérifier la configuration matérielle ou la version d'API.

1voto

Darren B Points 46

Le qualificatif keysoft est utilisé pour détecter un clavier matériel et non la barre de navigation.

Cet article résout le problème:

Vérifier la barre de navigation

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X