2010-08-31 25 views
7

Có cách nào để chúng tôi có thể chụp nút HOME và BACK trong tệp html trong ứng dụng Android bằng cách sử dụng phonegap/jqtouch/javascript không?Chụp nhấp chuột vào nút gốc trong điện thoại Android trong javascript

Tôi có một ứng dụng cho Android bằng cách sử dụng thẻ SIM. Tôi muốn nắm bắt các bấm nút HOME và BACK của điện thoại Android trong trang html để thoát/quay lại một cách duyên dáng.

+0

bạn có thể cụ thể hơn với câu hỏi –

+0

có một ứng dụng cho Android bằng cách sử dụng thẻ điện thoại hay không. Tôi muốn nắm bắt các bấm nút HOME và BACK của điện thoại Android trong trang html để thoát/quay lại một cách duyên dáng. – Newbee

Trả lời

10

Bạn có thể nắm bắt sự kiện nút BACK trong PhoneGap, tuy nhiên không phải nút HOME (đây là một thực hành Android kém vì có sự mong đợi người dùng rõ ràng bất kể ứng dụng bạn đang sử dụng về những gì phím HOME làm: gửi cho bạn trở lại màn hình chính của bạn! Bạn không muốn ghi đè chức năng này).

Tôi sẽ hướng dẫn bạn từng phần mã trong PhoneGap (LATEST nguồn! Kéo từ github cho phiên bản mới nhất của khung công tác điện thoại) để được hướng dẫn.

Đầu tiên, có một 'BrowserKey' đối tượng java ràng buộc với JavaScript 'BackButton' toàn cầu:

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

Định nghĩa của lớp này là ở đây: http://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/BrowserKey.java

Điều đầu tiên bạn cần phải làm trong ứng dụng của bạn (tôi đề nghị bạn chạy điều này trong quá trình khởi tạo ứng dụng) là để cho phía gốc của khung công tác biết rằng bạn đang ghi đè chức năng nút BACK. Bạn sẽ làm điều này trong JavaScript với một cuộc gọi đơn giản:

BackButton.override(); 

Từ đó trở đi, bạn có thể đính kèm một xử lý sự kiện cho sự kiện 'backKeyDown' của tài liệu để thực hiện luận mỗi khi nút BACK là hit. Một cái gì đó như thế này nên làm việc:

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

Là một phụ lục, đây là mã JavaScript mà kết thúc tốt đẹp sự kiện nút quay lại cử: http://github.com/phonegap/phonegap-android/blob/master/framework/assets/js/keyevent.js

Về cơ bản, sau khi gọi BackButton.override(), phía mẹ đẻ của framework sẽ gọi window.keyEvent.backTrigger() mỗi khi nút BACK được nhấn.

+0

Tôi không muốn ghi đè nút HOME. Tôi chỉ muốn nắm bắt nhấp chuột vào nút và kết thúc phiên của ứng dụng của tôi. Có cách nào để tôi có thể làm điều đó không? – Newbee

+1

Bạn sẽ phải mở rộng mã Java tại đây: http://github.com/phonegap/phonegap-android/blob/master/framework/src/com/phonegap/DroidGap.java#L612 bằng công tắc để nắm bắt nút HOME và sau đó gọi app.loadUrl ('javascript: myFunction();'); để kích hoạt chức năng 'myFunction' toàn cầu trong JavaScript sẽ xử lý việc này. Chỉ cần mở rộng cách tiếp cận mà tôi mô tả trong câu trả lời của tôi về cách hoạt động của nút BACK và áp dụng nó vào nút HOME. –

+0

Nút HOME sẽ không khiến ứng dụng của bạn kết thúc phiên. Trong Android, HOME dành cho chuyển đổi ứng dụng và người dùng có thể quay lại ứng dụng của bạn. Thay vào đó, hãy đóng phiên của bạn khi Activity bị hủy (xem [Activity Lifecycle] (http://developer.android.com/guide/topics/fundamentals.html#actlife)), tuy nhiên PhoneGap cho phép bạn làm điều đó. –

0

Tôi có một ứng dụng cho Android bằng cách sử dụng phonegap. Tôi muốn nắm bắt các bấm nút HOME và BACK của điện thoại Android trong trang html để thoát/quay lại một cách duyên dáng.

4

mẫu mã này làm việc cho PhoneGap 0.9.5 và sau đó (thử nghiệm trên 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); 

nút Home không thể được xử lý. Đó là dành riêng cho hệ thống.

Các vấn đề liên quan