2012-03-09 40 views

回答

3

由於API級別14,您可以使用ViewConfiguration.hasPermanentMenuKey()來檢測設備是否具有永久性菜單鍵。

通常,虛擬按鈕和物理按鈕是互斥的,所以這對您有所幫助。例如:

public class MyActivity extends Activity { 

    // ... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     boolean hasPermanentMenuKey = ViewConfiguration.get(this).hasPermanentMenuKey(); 
     boolean hasVirtualKeys = !hasPermanentMenuKey; 
     String message = hasVirtualKeys ? "This device has virtual menu keys" : "This device has physical keys"; 
     Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 
    } 
    // ... 

} 

警告:有一些案件中,這不會幫助你。例如,假設製造商決定使用虛擬鍵和物理菜單鍵;那麼這種方法不會幫助你。另一種情況是手機沒有虛擬鍵和物理菜單鍵(例如Samsung S5)。

+1

'ViewConfiguration.hasPermanentMenuKey()'在三星S5上返回false,但手機沒有虛擬鍵。我不認爲這是檢查虛擬密鑰的正確方法。 – tomrozb 2015-04-04 12:58:58

+0

你說得對。 S5沒有物理菜單鍵,但沒有虛擬按鈕,所以'boolean hasVirtualKeys =!hasPermanentMenuKey;'不再有效。我已經更新了我的答案,並對此發出了警告。 – 2015-04-07 09:31:47