2016-02-02 81 views
3

我正在使用Phonegap創建一個小應用程序,但navigator.app.exitApp()?完全不工作。PhoneGap - navigator.app.exitApp()不工作

  • 這是我的第一個混合應用程序。
  • 我的目標平臺是Android 5
  • 我正在使用Cordova CLI在Windows上進行開發。

我調用JavaScript函數與此

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

的JavaScript:

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

想法?

+0

您是否安裝了通知插件? –

+0

這一個?? cordova插件添加https://github.com/katzer/cordova-plugin-local-notifications –

+0

這一個: - cordova插件安裝org.apache.cordova.dialogs –

回答

6

添加監聽@ Thomas,
它曾經是那個叫navigator.app.exitApp()剛纔幾個絆腳石,但現在谷歌和蘋果公司都面臨着開發商面臨的主要障礙。

  1. 確保你的,你等待deviceready事件,你打這個電話給退出之前。你可能會考慮建立一個閃屏,或者使灰色(禁用)按鈕或者其他東西,直到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,快速回答是:

添加到您的​​3210

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

記下您的應用現已不安全。它是由你來保護你的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';"> 

記下您的應用現已不安全。它是由你來保護你的APP。
白名單當你準備好更安全時,工作表應該有所幫助。
HOW TO: apply the Cordova/Phonegap the whitelist system

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 
+0

我試過,但沒有工作@ Yazhini –

1

你也可以只是在你的設備準備的回調

onDeviceReady: function() { 

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

    //other stuff here 
} 
+0

沒有工作,我試圖用最簡單的想法和不@ @ weagle08 –

+0

奇怪,因爲該相同的片段是在生產代碼與navigator.app.exitApp();它按預期工作。你有一個非常簡單的項目來重現問題嗎? – weagle08

+0

我做了一個新的項目,只有這樣,工作......但在我的工作不會....奇怪@ weagle08 –