2010-08-31 19 views
7

C'è un modo in cui possiamo catturare il clic del pulsante HOME e INDIETRO nel file html nell'applicazione Android utilizzando phonegap/jqtouch/javascript?Catturare clic sul pulsante nativo nel telefono Android in javascript

Ho un'applicazione per Android che utilizza PhoneGap. Voglio catturare il clic del pulsante HOME e INDIETRO nativo del telefono Android nella pagina html per uscire/tornare indietro con garbo.

+0

Puoi essere più specifico con la domanda –

+0

avere un'applicazione per Android che utilizza PhoneGap. Voglio catturare il clic del pulsante HOME e INDIETRO nativo del telefono Android nella pagina html per uscire/tornare indietro con garbo. – Newbee

risposta

10

È possibile catturare l'evento del pulsante INDIETRO in PhoneGap, ma non il pulsante HOME (questa è una cattiva pratica Android in quanto vi è una chiara aspettativa da parte dell'utente indipendentemente dall'app che si sta utilizzando su ciò che fa il tasto HOME: invia torna alla schermata iniziale! Non si desidera ignorare questa funzionalità).

Vi dirò a pezzi di codice in PhoneGap (ULTIMA sorgente! Pull da github per l'ultima versione del framework phonegap) per la guida.

In primo luogo, v'è un oggetto Java 'BrowserKey' legata alla JavaScript 'BackButton' globale:

http://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/DroidGap.java#L291

La definizione di questa classe è qui: http://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/BrowserKey.java

La prima cosa che devi fare nella tua applicazione (ti suggerisco di eseguirlo durante l'inizializzazione dell'applicazione) è lasciare che il lato nativo del framework sappia che stai sovrascrivendo la funzionalità del pulsante BACK. Si potrebbe fare questo in JavaScript con una semplice chiamata:

BackButton.override(); 

Da lì in poi, è possibile collegare un gestore di eventi all'evento 'backKeyDown' del documento per eseguire la logica ogni volta il tasto BACK è colpito. Qualcosa del genere dovrebbe funzionare:

document.addEventListener('backKeyDown', function(e) { 
    alert('you hit the back key!'); 
}, false); 

Come un addendum, ecco il codice JavaScript che avvolge l'evento pulsante indietro dispacciamento: http://github.com/phonegap/phonegap-android/blob/master/framework/assets/js/keyevent.js

In sostanza, dopo aver chiamato BackButton.override(), la parte originaria della framework chiamerà window.keyEvent.backTrigger() ogni volta che si preme il pulsante BACK.

+0

Non voglio sovrascrivere il pulsante HOME. Voglio solo catturare il clic del pulsante e terminare la sessione della mia applicazione. C'è un modo in cui posso farlo? – Newbee

+1

Dovresti estendere qui il codice Java: http://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/DroidGap.java#L612 con un interruttore per catturare il pulsante HOME , quindi chiama app.loadUrl ('javascript: myFunction();'); attivare una funzione globale 'myFunction' in JavaScript che gestirà questo. Estendi semplicemente l'approccio che descrivo nella mia risposta su come funziona l'acquisizione del pulsante BACK e applicalo al pulsante HOME. –

+0

Il pulsante HOME non dovrebbe causare l'interruzione della sessione dell'applicazione. In Android, HOME è per il cambio di applicazione e l'utente potrebbe tornare alla tua applicazione. Invece, chiudi la sessione quando l'attività viene distrutta (vedi [Ciclo di vita dell'attività] (http://developer.android.com/guide/topics/fundamentals.html#actlife)), tuttavia PhoneGap ti consente di farlo. –

0

Ho un'applicazione per Android che utilizza PhoneGap. Voglio catturare il clic del pulsante HOME e INDIETRO nativo del telefono Android nella pagina html per uscire/tornare indietro con garbo.

4

Questo esempio di codice funziona per PhoneGap 0.9.5 e versioni successive (testato su 0.9.6):

document.addEventListener("menubutton", function() { 
     alert('Menu button'); 
    }, false); 

    document.addEventListener("searchbutton", function() { 
     alert('Search button'); 
    }, false);      

    document.addEventListener("backbutton", function() { 
     alert('Back button'); 
    }, false); 

tasto Home non può essere gestita. Questo è riservato dal sistema.

Problemi correlati