我的所有PhoneGap Build应用程序都包含系统菜单按钮:
它在我的所有设备上都无法使用(点击它不起作用),所以到目前为止我只是忽略了它。
但是,今天我收到的反馈是,在某些Android设备上按此按钮只会让我的应用程序出现令人讨厌的系统错误。因此,这不仅是一个UI问题,而且是一个真正的痛苦。
在使用PhoneGap Build构建应用程序时,如何永久删除此按钮?
请注意,此问题不是this one的副本,因为given answer不回答我的问题。这是PhoneGap Build only问题,当我使用PhoneGap Build构建我的应用程序时,我无法访问.java
个文件,因此我无法应用建议的解决方案。
答案 0 :(得分:2)
Android 4.x(API级别14)中删除了系统菜单的想法(但不支持)。使用此版本或更新版本的Android的大多数设备应该忽略用户按此按钮。但是,有报道称,某些事情会因此而崩溃。
有两种方法可以解决这个问题。
根据PGB支持的this answer,当您将android:minSdkVersion
中的config.xml
设置为14
或更高的值时,您将能够在没有系统的情况下构建PhoneGap应用程序菜单。
您可以使用general preferences tag:
设置此属性<preference name="android-minSdkVersion" value="14" />
<preference name="android-targetSdkVersion" value="21" />
并且这些值将在构建期间复制到usesSdk
文件中的AndroidManifest.xml
属性。
或者您可以使用config-file style:
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
xmlns:android = "http://schemas.android.com/apk/res/android"
id = "com.lumberg.greeeaaat"
minSdkVersion = "14"
targetSdkVersion = "14"
version = "1.0.0">
在这种情况下,必须设置android命名空间(即xmlns:android = "http://schemas.android.com/apk/res/android"
),否则您的config.xml
文件在构建期间不会通过标准XML验证。
但是,此解决方案将完全阻止早于4.x的Android用户安装您的应用!因此,如果这对你很重要,你必须仔细考虑。
Here您会找到有关minSdkVersion
和targetSdkVersion
之间差异的信息。
我们正在谈论(在Android 4.x +的最新移动设备上)虚拟菜单按钮,而许多Android 2.x设备都有硬件菜单按钮,必须以某种方式处理,不能简单地删除&#34;按系统或应用程序本身。出于这个原因,可能没有任何其他方法可以从Android 4.x上运行的应用程序中删除虚拟菜单按钮,除了声明此特定应用程序是为Android 4.x设计的至少,因此无法安装在任何旧版本上。说,但是真的
如果您希望自己的应用程序支持早于4.x的Android版本,或者由于其他原因无法实现上述解决方案,那么您必须习惯,您将看到系统菜单按钮。周期。
您可以做的一件事就是handle presses on that button:
var app =
{
init: function()
{
document.addEventListener('deviceready', app.deviceReadyHandler, false);
},
deviceReadyHandler: function()
{
document.addEventListener('menubutton', app.menuButtonHandler, false);
},
menuButtonHandler: function()
{
//Do nothing...
}
};
app.init();
对于大多数设备(那些忽略用户按下系统菜单按钮的设备),什么都不会改变。虽然在这种情况下崩溃的这一小部分设备现在不再崩溃,因为系统菜单的按下处理。
如果是此解决方案,您的应用程序仍可安装在早于4.x 的Android上。