PhoneGap для Android не принимает ключ 9

У меня странная проблема в Android-приложении на базе Android. На некоторых экранах ключ номер 9 полностью игнорируется. Это происходит на всех моих Android 2.X. Я попытался с предыдущими версиями PG и обнаружил, что проблема впервые возникла в версии 1.2.

Вот код примера файла index.html, который должен воспроизвести проблему. На Android 2.2 и 2.3 текстовые поля, помеченные как "сломанные", не принимают число 9 в качестве входных данных.

    <!DOCTYPE html>
    <html>
    <head>
        <title>Test</title>
        <style>
        body
        {
            margin:0;
            padding:0;
            font-size:20px;
        }

        input
        {
            height:20px;
        }

        #container_second
        {
            overflow:hidden;
            position:relative;
            width:100%;
            height:150px;
        }

        #container_second div
        {
            left: -2000px;
            position: absolute;
            -webkit-transform: matrix(1, 0, 0, 1, 2000, 0);
        }
        </style>
    </head>
    <body>
        <br />
        <div id="container_first">
            <div>
                Working Text: <br /><input type="text" /><br /><br />
                Working Tel: <br /><input type="tel" />
            </div>
        </div>

        <br /><br />

        <div id="container_second">
            <div>
                Broken Text: <br /><input type="text" /><br /><br />
                Broken Tel: <br /><input type="tel" />
            </div>
        </div>
    </body>
    </html>

Ответ 1

Это может быть связано с этой проблемой. По какой-то причине PhoneGap вызывает setNavDump в веб-представлении WebSettings. setNavDump - это устаревший метод в соответствии с андроидными документами, поэтому вы должны быть в порядке, если его отключить.

Один из способов сделать это - переопределить метод init в вашем классе, который расширяет DroidGap

    @Override
public void init() {
    super.init();       
    this.appView.getSettings().setNavDump(false);
}

Если это не сработает, попробуйте добавить его после вызова loadUrl в существующем методе onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    //... snip ...
    super.loadUrl("file:///android_asset/www/index.html", 12000);
    this.appView.getSettings().setNavDump(false);
    //... snip ...
}

Ответ 2

У меня была такая же проблема. Оказывается, вам нужно указать версию Android SDK через номер API в файле config.xml

добавить:   <preference name="android-minSdkVersion" value="8" />

Ответ 3

Я разработал приложение phonegap в eclipse (для android). У меня такая же проблема. Когда я нажал на 7, приложение остановилось, и когда я нажимаю на 9, приложение ничего не делает в компонентах текстовой области. Также проблема возникла в версиях Android 2.2 и 2.3.3. В макете была такая структура, как frame- > frame- > linear layout. А потом я удалил оба фрейма. Я просто использовал линейную компоновку, и тогда проблема решена. Я могу нажать на 7 и 9, и в приложении нет проблем. Я имею в виду, вы должны проверить неиспользуемые компоненты компоновки.