2013-07-24 10 views
14

Mam problem z moją aplikacją w telefonie. Chcę zminimalizować aplikację (wysłać aplikację w tle, aby nadal działała) po naciśnięciu przycisku Wstecz.Wyślij aplikację do trybu tła po naciśnięciu przycisku Wstecz w telefonie Phonegap

Oto mój kod.

document.addEventListener("backbutton", onBackKeyDown, false); 
function onBackKeyDown() { 
} 

Jeśli używam navigator.app.exitApp(); - moja aplikacja zakończy i Jeśli używam navigator.app.backhistory() - To po prostu wrócić do poprzedniej strony.

Chcę, żebym nacisnął przycisk Wstecz, wyśle ​​mnie do ekranu głównego i wyśle ​​aplikację do tła, aby nadal działała. Dziękuję Ci.

+0

ten jest lepszy niż użycie plugi guess http://stackoverflow.com/a/17700471/2769122 –

Odpowiedz

7

Najlepiej jest użyć wtyczki do uruchomienia ekranu głównego. Stworzyłem już jeden dla moich własnych celów - możesz pobrać mój projekt testowy Eclipse zawierający kod źródłowy i skompilowany plik APK from here.

Będziesz wtedy używać wtyczki, aby nadpisać domyślne zachowanie Wstecz coś takiego:

function onBackKeyDown(e) { 
    e.preventDefault(); 
    cordova.require('cordova/plugin/home').goHome(function(){ 
    console.info("Successfully launched home intent"); 
    }, function(){ 
    console.error("Error launching home intent"); 
    }); 
} 
document.addEventListener("backbutton", onBackKeyDown, false); 

Oto kod źródłowy wtyczki:

Home.java

package org.apache.cordova.plugin; 

import org.json.JSONArray; 
import org.json.JSONException; 

import android.content.Intent; 
import android.util.Log; 

import org.apache.cordova.api.CallbackContext; 
import org.apache.cordova.api.CordovaPlugin; 

public class Home extends CordovaPlugin { 

    private static final String LOG_TAG = "HomePlugin"; 

    @Override 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { 
     if ("goHome".equals(action)) { 
      try {    
       Intent i = new Intent(Intent.ACTION_MAIN); 
       i.addCategory(Intent.CATEGORY_HOME); 
       this.cordova.getActivity().startActivity(i); 

      } catch (Exception e) { 
       Log.e(LOG_TAG, "Exception occurred: ".concat(e.getMessage())); 
       return false; 
      } 
      callbackContext.success(); 
      return true; 
     } 
     Log.e(LOG_TAG, "Called invalid action: "+action); 
     return false; 
    } 
} 

home.js

cordova.define("cordova/plugin/home", function(require, exports, module) { 
    var exec = require('cordova/exec'); 
    var Home = function() {}; 
    Home.prototype.goHome = function(successCallback, errorCallback) { 
     return cordova.exec(successCallback, errorCallback, 'Home', 'goHome', []); 
    }; 
    var home = new Home(); 
    module.exports = home; 
}); 

config.xml

<plugin name="Home" value="org.apache.cordova.plugin.Home"/> 
14

można użyć tej plugin wtedy, gdy urządzenie gotowe słuchać BackButton i kiedy onBackKeyDown użyć wtyczki do uruchomienia ekranie głównym

`document.addEventListener("backbutton", onBackKeyDown, false); 
function onBackKeyDown() { 
    navigator.Backbutton.goHome(function() { 
     console.log('success') 
    }, function() { 
     console.log('fail') 
    }); 
} 
` 

to wtyczka jest właśnie aktualizowana z Dpa99c odpowiedź dla pomocy użytkownika z cordova> = 3

+0

błąd wtyczki podczas pobierania – SalmanShariati

+0

której wersji używasz? –

+0

Próbowałem ostatniej wersji na Cordova 3.5.0 – SalmanShariati

Powiązane problemy