2012-02-08 7 views
6

Czy istnieje sposób w ICS/HC, aby wykryć, czy użytkownik ma dostęp do klucza menu sprzętowego?Android 4.0 wykrywa, czy użytkownik ma klucze sprzętowe/domowe

zależności od konfiguracji Mam nadzieję, aby zmienić sposób actionbar jest wypełniana, na przykład:

Jeśli użytkownik ma fizyczny przycisk home, zmniejszyć liczbę przycisków pokazanych na actionbar.

Dzięki Laurence

+0

Dlaczego w ogóle masz te w pasku akcji? Są już na pasku systemowym. –

+0

Przykładem może być klucz wyszukiwania, jeśli użytkownik ma klucz wyszukiwania, którego nie chcę pokazywać na pasku akcji. – Ljdawson

+0

Prawdopodobnie lepiej zmienić ustawienia na podstawie modelu [telefonu]. (Http://developer.android.com/reference/android/os/Build.html#MODEL) – adneal

Odpowiedz

0

oba ICS i miodu (niestety) zastąpiony klawisz menu dla połączenia na pasku akcji i systemowym pasku, nie pozwalając nam skonfigurować gdy chcemy pokazać przycisk menu.

po prostu nie zakładaj, że istnieje, lub ustaw docelowy sdk na 10, który zawsze będzie wyświetlał klawisz menu (który wygląda jak 3 kropki).

W każdym razie, byłoby interesujące, gdybyś znalazł sposób na sprawdzenie, czy przycisk menu istnieje.

2

Zajęło mi trochę czasu, ale znalazłem bardziej niezawodny sposób niż poleganie na hasPermanentMenuKey() który nie działa na nowszych telefonach jak HTC One które nie mają klawisz menu, ale mają z powrotem do domu & klucze, więc nie potrzebujesz (lub pokazuj) paska nawigacji. Aby obejść ten problem, wypróbuj poniższy kod, który sprawdza również przycisk Wstecz:

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey(); 
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); 

if(!hasMenuKey && !hasBackKey) { 
    // Do whatever you need to do, this device has a navigation bar 
} 
+0

Nexus 6 bez kluczy sprzętowych, wciąż zwraca true na KeyCharacterMap.deviceHasKey (KeyEvent.KEYCODE_BACK); – Vlad

Powiązane problemy