【问题标题】:How to check if a phone has hardware menu button in Android 2.1?如何在 Android 2.1 中检查手机是否有硬件菜单按钮?
【发布时间】:2012-06-11 09:01:01
【问题描述】:

我想弄清楚Android手机是否有硬件菜单按钮,我搜索并找到了这个方法:

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

但这似乎不适用于 Android 2.1,我正在尝试创建一个适用于 Android 2.1 及更高版本的应用。安卓3.0以下的手机是否可以检测到是否有硬件按键?

【问题讨论】:

    标签: android button menu hardware popupmenubutton


    【解决方案1】:

    每个兼容的 2.1 android 设备都有一个菜单键,因为它是 CDD 的一部分:

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

    参见第 8.7 节:

    “Home、Menu 和 Back 功能对于 Android 导航范例至关重要。设备实现必须让用户始终可以使用这些功能,无论应用程序处于何种状态。”

    因此,如果设备运行的是 android 2.1,则可以安全地假设它具有菜单键。如果它运行的是更高版本,您可以使用您找到的 API。

    【讨论】:

    • 我明白这一点,但我正在为 2.1 创建一个应用程序,但它也可以在更高/更新版本上使用,所以如果版本是 2.1,它们都有一个菜单按钮,但是如果用户有版本怎么办3 或更高版本/更新版本使用该应用程序如何检测它是否有硬件菜单按钮,而我的基本版本仍然是 2.1?
    • 只要您的构建目标设置为 Android 3 或更高版本,但您的 min sdk 版本设置为 2.1,您仍然可以包含 Android 3 特定代码。您只需要确保仅在 Android 3+ 设备上运行时调用该代码。
    • 好的,谢谢大家!我会试一试。感谢您的回复!
    【解决方案2】:

    hasPermanentMenuKey() 从 API 级别 14 开始引入,因为从 Android 3.0 开始,设备被允许没有菜单键。所以我假设您可以放心地假设 2.1 设备将具有菜单键。检查有关此的 android 文档以获取更多信息。 Android view Configuration hasPermanantMenuKey

    【讨论】:

    • 我明白这一点,但我正在为 2.1 创建一个应用程序,但它也可以在更高/更新版本上使用,所以如果版本是 2.1,它们都有一个菜单按钮,但如果用户有版本怎么办3 或更高版本/更新版本使用该应用程序如何在我的基本版本仍然是 2.1 时检测它是否有硬件菜单按钮?
    • 我也有同样的问题。我正在使用 2.3.3 API 级别 10 构建我的应用程序。我无法使用 hasPermanantKey()。
    • 最大的问题是,从 API 级别 11(Android 3.0)开始,设备不需要菜单按钮,但直到 API 级别 14(Android 4.0)才引入 hasPermanentMenuKey()。所以对于 API 级别 11、12 和 13,你就完蛋了。
    • 我发现ViewConfiguration.get(this).hasPermanentMenuKey() 为带有硬件菜单按钮的设备提供false(Android 4.4 的注4)和true 为一些没有的设备。它不可靠。然而,我没有其他选择。
    【解决方案3】:

    hasPermanentMenuKey() 在 API 级别 14 (3.0) 中可用。我相信可以安全地假设在 3.0 以下运行的设备上有一个密钥。 3.0以上可以调用这个方法来判断是否需要提供替代方法。

    【讨论】:

    猜你喜欢
    • 2011-11-08
    • 2012-02-21
    • 2014-05-01
    • 2017-04-04
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多