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

Tho*_*eld 5 javascript android cordova phonegap-cli

我正在使用Phonegap制作一个小应用程序,但navigator.app.exitApp()?它根本不起作用.

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

我用它来调用JavaScript函数

<input type='button' onclick='exitApp();'/>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function exitApp() { navigator.app.exitApp(); }
Run Code Online (Sandbox Code Playgroud)

想法?

Jes*_*650 6

@Thomas,曾经有过
这样的召唤navigator.app.exitApp()只有几个绊脚石,但现在谷歌和苹果都给开发者带来了重大障碍.

  1. deviceready在拨打电话退出之前,请确保您等待事件.你可能会考虑设置一个启动画面,或者灰色(禁用)按钮或其他东西,直到deviceready激活并加载Cordova库.
  2. 这是*障碍*.您现在需要添加whitelist插件并为Android添加CSP.该插件是必需的CSP.您可以通过将所有Javascript(包括任何on*=)和<style>(和style=)移动到单独的文件中来解决此问题.EXCEPTION 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();
    });
}
Run Code Online (Sandbox Code Playgroud)

将其添加到index.html:

<button id="exitApp">Exit</button>
Run Code Online (Sandbox Code Playgroud)

在#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 -->
Run Code Online (Sandbox Code Playgroud)

注意您的应用程序现在不安全.由您来保护您的APP.
将以下内容添加到您的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';">
Run Code Online (Sandbox Code Playgroud)

注意您的应用程序现在不安全.由您来保护您的APP.当您准备好更安全时,
白名单工作表应该会有所帮助.
如何:将Cordova/Phonegap应用于白名单系统