5

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

  • 这是我的第一个混合应用程序。
  • 我的目标平台是 Android 5
  • 我正在使用 Cordova CLI 在 Windows 上进行开发。

我用这个调用一个 JavaScript 函数

<input type='button' onclick='exitApp();'/>

JavaScript:

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

想法??

4

4 回答 4

6

过去,调用navigator.app.exitApp()只有几个绊脚石,但现在谷歌和苹果都给开发者带来了重大障碍。

  1. deviceready确保您在调用exit之前等待事件。您可能会考虑放置一个启动画面,或者将按钮灰显(禁用)或其他东西,直到deviceready触发并加载 Cordova 库。
  2. 这是*障碍*。您现在需要添加一个whitelist插件,对于 Android 添加CSP. 该插件是CSP. 您可以通过将所有 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';">

注意您的应用程序现在不安全。保护您的应用程序由您决定。当您准备好提高安全性时,
白名单工作表应该会有所帮助。
如何:应用 Cordova/Phonegap 白名单系统

于 2016-02-03T06:02:39.020 回答
2

使用以下内容:

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
于 2016-02-02T04:39:40.307 回答
1

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

onDeviceReady: function () {

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

    //other stuff here
}
于 2016-02-02T05:29:42.563 回答
0

只需在此行中您需要的任何地方使用(Ionic 3 完全正常工作)

navigator.app.exitApp();

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

于 2019-06-14T10:26:49.933 回答