Отключить / переопределить кнопку Android Back в Cordova 3.5

1

В документации по Cordova для версии 3.5:

http://cordova.apache.org/docs/en/3.5.0/cordova_events_events.md.html#Events

Я использовал следующий код, чтобы отключить кнопку "Назад". Событие onDeviceReady срабатывает, но событие кнопки "Назад" не работает.

// Wait for device API libraries to load
//
function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

// device APIs are available
//
function onDeviceReady() {
    // Register the event listener
    document.addEventListener("backbutton", onBackKeyDown, false);
}

// Handle the back button
//
function onBackKeyDown() {
}

Среди других интересных сообщений я получаю это сообщение в консоли:

exec() call to unknown plugin App.

Я видел несколько ответов на эту проблему, включая следующие, чтобы отредактировать файл config.xml и добавить следующее:

<feature name="App">
     <param name="android-package" value="org.apache.cordova.App" />
</feature>

Ничего из этого не работает.

  • 0
    переместите событие backbutton в строку под событием deviceready (не в backbutton для deviceready , а затем убедитесь, что у вас установлен плагин device . также обязательно добавьте return false; в конце onBackKeyDown .
Теги:
cordova

2 ответа

1
Лучший ответ

Обнуление этой ошибки:   exec вызов неизвестного плагина Приложение

Я изучил файл App.java, в котором есть плагин App, включенный в сборку cordova, я нашел следующую строку:

protected static final String TAG = "CordovaApp";

Это не соответствует соответствующему вызову exec(), выполненному в файле cordova.js, который поставляется с 3.5. Итак, я изменил его на

protected static final String TAG = "App";

Теперь событие переопределяет для кордовы всю работу по документации.

Приветствия.

  • 1
    Разве эта константа TAG используется только для регистрации в Logcat? Почему вы считаете, что это имеет отношение к вашей проблеме?
  • 0
    Да, для разработчиков Android TAG используется в качестве константы тега log.
3

Чтобы отключить функциональность кнопки "назад", вам нужно вызвать preventDefault() объекта события, переданного обработчику:

document.addEventListener("backbutton", onBackKeyDown, false);

function onBackKeyDown(e) {
    e.preventDefault();
}

Если вы получаете другие ошибки, я предлагаю удалить и повторно добавить платформу Android (убедитесь, что у вас установлена ​​последняя версия Кордовы):

$ npm update cordova -g
$ cordova platform remove android
$ cordova platform add android

Было бы лучше, если бы вы могли поделиться своим проектом, чтобы я мог видеть, что-то не так. Другие проверки, которые вы можете выполнить:

  • Убедитесь, что все плагины установлены для любых других функций, которые вы могли бы использовать cordova plugin ls, предоставит вам список всех установленных.

  • Убедитесь, что вы ссылаетесь на <script type="text/javascript" src="cordova.js"></script>.

  • Проверка готовности устройства к запуску.

  • Проверьте, нет ли ошибок JavaScript при отладке в инструментах Safari dev при запуске приложения.

  • 0
    У меня действительно был вызов предотвращению дефолта и возврат ложного только для хорошей меры. Тем не менее, ничего из этого не сработало, поскольку мероприятие вообще не стреляло. Что касается установки последней версии Cordova, в то время я только что сделал новую установку, чтобы довести мою версию до 3,5.
  • 0
    Вы удалили и повторно добавили платформу? Было бы лучше, если бы вы поделились большим количеством своего проекта, чтобы я мог видеть, где что-то идет не так, иначе я не могу помочь дальше. Я добавил еще несколько предложений в мой ответ, если вы уже удалили и заново добавили платформу.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню