PhoneGap - navigator.app.exitApp() 不工作

PhoneGap - navigator.app.exitApp() Not Working

我正在使用 Phonegap 制作一个小应用程序,但 navigator.app.exitApp()? 根本无法运行。

我用这个

调用了一个JavaScript函数
<input type='button' onclick='exitApp();'/>

JavaScript:

function exitApp() { navigator.app.exitApp(); }

想法??

使用以下内容:

function backKeyDown() {
    navigator.notification.confirm("Are you sure you want to exit?", onConfirm, "Please Confirm", "Yes,No"); 
}
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.
    }
}

您必须安装以下插件:

cordova plugin install org.apache.cordova.dialogs

您也可以只在设备就绪回调中添加一个侦听器

onDeviceReady: function () {

    document.addEventListener('backbutton', function(e){
        e.preventDefault();
        //TODO: throw up your dialog here!
    }, true);

    //other stuff here
}

过去调用 navigator.app.exitApp() 只是一些绊脚石,但现在 Google 和 Apple 都为开发人员设置了主要障碍。

  1. 确保在调用 exit 之前等待 deviceready 事件。您可能会考虑设置启动画面,或使按钮变灰(禁用)或其他方式,直到 deviceready 触发并加载 Cordova 库。
  2. 这是*障碍*。您现在需要添加一个 whitelist 插件,并为 Android 添加 CSPCSP 需要该插件。您可以通过将所有 Javascript(包括任何 on*=)和 <style>(以及 style=)移动到一个单独的文件中来解决这个问题。 CSP 的异常 – 使用任何在线资源。

在#1,

将此添加到您的 javascript:

// Wait for PhoneGap to load
document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    // alert("deviceready");
    document.getElementById('exitApp').addEventListener('click', function() {
        navigator.app.exitApp();
    });
}

将此添加到您的 index.html:

<button id="exitApp">Exit</button>

关于 #2, 快速回答是:

将此添加到您的 config.xml

<plugin name="cordova-plugin-whitelist" source="npm" spec="1.1.0" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" /> <!-- Required for iOS9 -->

请注意,您的应用现在不安全。保护您的应用程序取决于您。
将以下内容添加到您的 index.html

<meta http-equiv="Content-Security-Policy" 
         content="default-src *; 
                  style-src * 'self' 'unsafe-inline' 'unsafe-eval'; 
                  script-src * 'self' 'unsafe-inline' 'unsafe-eval';">

请注意,您的应用现在不安全。保护您的应用程序取决于您。
当您准备好提高安全性时,这份 白名单 工作表应该会有所帮助。
HOW TO: apply the Cordova/Phonegap the whitelist system

只需在这一行中需要的地方使用(Ionic 3 可以正常工作)

navigator.app.exitApp();

就是这样。享受你的编码...