2016-12-25 2 views
0

Я пытаюсь захватить события устройства в приложении Android Cordova. Но, кроме события deviceReady, никакое другое событие не запускается. Я использую событие, указанное в документации Cordova после события deviceReady. Моя Кордова версия 6.4.0Не работает событие Cordova, отличное от события deviceReady

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 

    document.addEventListener("backbutton", function(e){ 
    // My Code here 
    }); 

    document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false); 

    function onVolumeDownKeyDown() { 
    console.log('volume downn') 
    // Handle the volume down button 
    } 

    document.addEventListener("menubutton", onMenuKeyDown, false); 

    function onMenuKeyDown() { 
    console.log('menu button') 
     // Handle the back button 
    } 

    document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false); 

    function onVolumeUpKeyDown() { 
    console.log('volume up button') 
    // Handle the volume up button 
    } 
}; 
+0

Являются ли эти обработчики событий определенными в функции deviceready или вне нее? Как показано [здесь] (https://cordova.apache.org/docs/de/latest/cordova/events/events.backbutton.html#vollst%C3%A4ndiges-beispiel) для события backbutton. – Blauharley

+0

@Blauharley Они определяются после запуска события deviceReady, как указано в этой ссылке. – superUser

+0

Вы вставили код в порядке, тем не менее есть еще недостающий код, который вызывает этот код слишком рано. Как вы обернули эти обработчики? – Blauharley

ответ

0

См один вопрос here где обновление Cordova версию 6.4.0 давал ошибку в одном проекте, который работает нормально с версией 6.2.0

и раствор для понижения версии Кордову помог он снова восстановит проект.

Я создал один тестовый проект и гнал это index.html, который работает отлично подходит для меня, просто попробуйте добавить то же самое в тестовом проект и дайте нам, если это работает или нет

Моей версии Кордовы 6.2.0

<html> 
    <head> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <script src="cordova.js"></script> 
     <script> 
      document.addEventListener("deviceready", onDeviceReady, false); 
      function onDeviceReady(){ 
       setTimeout(function(){ 
        try{ 
         document.addEventListener('backbutton', function(e){  
          alert("Back Button Clicked") 
         }, false); 
        }catch(e){ 
         alert(e); 
        } 
       }, 500); 
      } 
     </script> 
    </head> 
    <body> 
     <div> 
      <h1>Click Android Back button to see event fired or not</h1> 
     </div> 
    </body> 
</html> 
Смежные вопросы