Кнопка подтверждения выхода из приложения Android + PhoneGap + JQuery
Как я могу обработать физическую кнопку возврата в Android с помощью jQuery Mobile в онлайн-системе Phonegap? Я хочу показать подтверждение выхода из приложения (ДА - НЕТ). Я пробовал много способов, но ничего не работает.
5 ответов
Попробуй это:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false); //Listen to the User clicking on the back button
}
function onBackKeyDown(e) {
e.preventDefault();
navigator.notification.confirm("Are you sure you want to exit ?", onConfirm, "Confirmation", "Yes,No");
// Prompt the user with the choice
}
function onConfirm(button) {
if(button==2){//If User selected No, then we just do nothing
return;
}else{
navigator.app.exitApp();// Otherwise we quit the app.
}
}
При первом щелчке на set exitApp = true, поэтому при повторном нажатии на кнопку приложение выйдет из приложения. но установите один Интервал, чтобы изменить состояние exitApp на false. поэтому при двойном нажатии кнопки в течение 1 секунды приложение будет закрыто.
document.addEventListener('deviceready', function() {
var exitApp = false, intval = setInterval(function (){exitApp = false;}, 1000);
document.addEventListener("backbutton", function (e){
e.preventDefault();
if (exitApp) {
clearInterval(intval)
(navigator.app && navigator.app.exitApp()) || (device && device.exitApp())
}
else {
exitApp = true
history.back(1);
}
}, false);
}, false);
// Функция Deviceready
document.addEventListener('deviceready', function() {
document.addEventListener("backbutton", ShowExitDialog, false);
}, false);
// Диалоговое окно при нажатии кнопки назад
function ShowExitDialog() {
navigator.notification.confirm(
("Do you want to Exit?"), // message
alertexit, // callback
'My APp', // title
'YES,NO' // buttonName
);
}
// Вызов функции выхода
function alertexit(button){
if(button=="1" || button==1)
{
device.exitApp();
}
}
Не уверен, что телефонная щель изменилась или что, но решение Suhas и geet только для меня сработало. (но определенно дал мне то, что мне было нужно, чтобы все заработало, спасибо!) Кнопка возврата в основном сломалась.
вот твики, которые заставили его работать на меня:
как только ваше приложение загружено, сделайте это:
document.addEventListener("backbutton", onBackKeyDown, false);//hijack the backbutton
function onBackKeyDown(e){
var page = $.mobile.activePage.attr('id');
xStat.rec("back button clicked from page:" + page);
if (page == 'menuPage'){//are you on the 'root page' from which phonegap will exit?
e.preventDefault();
$.mobile.changePage('#aboutToExitAppPage');
} else {
window.history.back();//restore normal back button functionality
}
}
//somewhere else in your code for the "aboutToExit app" page
$('#aboutToExitAppPage').on('pageinit', function(){
$(this).find('#exitApp').on('click', function(){
navigator.app.exitApp();//quit the app.
});
});
и HTML
<div data-role="page" id="aboutToExitAppPage">
<div data-role="header" id="" data-position="inline" data-backbtn="true" >
<h1 class=>About to exit app</h1>
</div>
<div data-role="content" style="width:100%; height:100%; padding:0;">
<ul id="" data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b" data-role="fieldContain">
<input id="exitApp" class="" type="button" value="Exit" data-theme="">
<a href="#menuPage" data-role='button'>Main Menu</a>
</ul>
</div>
</div>
Если пользователь нажимает на "да", выйдите из приложения. прежде всего установите плагин диалоговых окон, запустив "плагин cordova add cordova-plugin-dialogs"
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false); //Listen to the User clicking on the back button
}
function onBackKeyDown(e) {
e.preventDefault();
navigator.notification.confirm("Are you sure you want to exit ?", onConfirm, "Confirmation", "Yes,No");
// Prompt the user with the choice
}
function onConfirm(button) {
if(button==1){//If User selected Yes, then exit app
navigator.app.exitApp();
}else{
return;
}
}
Попробуйте это // Когда устройство готово
document.addEventListener('deviceready', function() {
document.addEventListener("clickBackbutton", ExitDialogPrompt, false);
}, false);
function ExitDialogPrompt() {
navigator.notification.confirm(
("Do you want to Exit?"), // message
prompt, // callback
'Your title', // title
'YES,NO' // button Name
);
}
function alertexit(button){
if(button=="0" || button==1)
{
navigator.app.exitApp();
}
}
Это сработало для меня.
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
Использовать этот
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
document.addEventListener("backbutton", function(e) {
e.preventDefault();
if(confirm("Exit App?")) {
navigator.app.exitApp();
}
}, false);
}
</script>
или
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
document.addEventListener("backbutton", function(e) {
e.preventDefault();
press = press + 1;
if(press == 1) {
alert('Press again to exit');
}
if(press == 2) {
navigator.app.exitApp();
}
}, false);
}
</script>