2012-06-07 43 views
4

我試圖找出如果一個Android手機有硬件菜單按鈕硬件菜單按鈕,我搜索,發現這個方法:如何檢查是否android手機擁有Android 2.1的

ViewConfiguration.get(getApplicationContext()).hasPermanentMenuKey(); 

但這似乎並沒有在Android 2.1中工作,我試圖創建一個適用於Android 2.1及更高版本的應用程序。是否有可能檢測到Android版本低於3.0的手機上是否有硬件按鈕? 幫助,將不勝感激。

回答

3

每個兼容2.1的Android設備有一個菜單鍵,因爲它是CDD的一部分:

http://source.android.com/compatibility/2.1/android-2.1-cdd.pdf

見8.7節:

「的主頁,菜單和返回功能是必要的Android的導航範例,無論應用狀態如何,設備實現都必須隨時爲用戶提供這些功能。「

因此,如果設備運行的是android 2.1,那麼假設它有一個菜單鍵是安全的。如果它運行的是更高版本,則可以使用您找到的API。

+1

我明白這一點,但我爲2.1創建了一個應用程序,但它也可以用於更高/更新的版本,所以如果版本是2.1,它們都有菜單按鈕,但是如果版本爲3或更高版本的用戶使用應用程序我如何檢測它是否有硬件菜單按鈕,而我的基本版本仍然是2.1? –

+0

只要您的構建目標設置爲Android 3或更高版本,但您的min sdk版本設置爲2.1,則仍然可以包含Android 3特定的代碼。您只需確保在Android 3 +設備上運行時只調用該代碼即可。 –

+0

好的,謝謝你們!我會試一試。感謝您的回覆! –

1

hasPermanentMenuKey()自API Level 14推出以來,因爲從Android 3.0開始,設備不允許有菜單鍵。所以我假設你可以安全地假設2.1設備將有一個菜單鍵。查看更多關於此的android documentatin。 Android view Configuration hasPermanantMenuKey

+1

我明白這一點,但我爲2.1創建了一個應用程序,但它也可以用於更高/更新的版本,所以如果版本是2.1,它們都有菜單按鈕,但如果版本3或更高版本的用戶使用應用程序如何檢測它是否有硬件菜單按鈕,而我的基本版本仍然是2.1? –

+0

我有同樣的問題。我正在用2.3.3 API級別10構建我的應用程序。我無法使用hasPermanantKey()。 –

+1

巨大的問題是,從API級別11(Android 3.0)設備不需要菜單按鈕,但hasPermanentMenuKey()'直到API級別14(Android 4.0)才被引入。所以對於API等級11,12和13,你是擰緊的。 – cprcrack

0

hasPermanentMenuKey()在API級別14(3.0)變得可用。我相信假設在3.0以下運行的設備上有一個關鍵是安全的。在3.0以上,您可以調用此方法來確定是否需要提供替代方法。

+0

每個人都在......大聲笑+1上。 – cstrutton

+0

API級別14實際上是ICS --- Android 4.0.1。 [這是一個確定清單的鏈接。](http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels) –

相關問題