2012-03-09 70 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