Отправить приложение в фоновый режим, когда кнопка "Назад" нажата в Phonegap - программирование
Подтвердить что ты не робот

Отправить приложение в фоновый режим, когда кнопка "Назад" нажата в Phonegap

У меня проблема с моим телефоном. Я хочу свернуть приложение (отправить приложение в фоновом режиме, чтобы он все еще работал), когда нажата кнопка "Назад".

Вот мой код.

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

Если я использую navigator.app.exitApp(); - мое приложение завершится и если я использую navigator.app.backhistory() - он вернется к предыдущей странице.

Я хочу, чтобы, если я нажму кнопку "Назад", он отправит меня на главный экран и отправлю приложение на задний план, чтобы он все еще работал. Спасибо.

4b9b3361

Ответ 1

вы можете использовать этот plugin затем, когда устройство готово слушать подлокотник, и когда onBackKeyDown использует плагин для запуска главного экрана

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

этот плагин обновляется только от Dpa99c для ответа пользователя с кордорой >= 3

Ответ 2

Лучше всего использовать плагин для запуска главного экрана. Я уже создал его для своих целей - вы можете скачать мой тестовый проект Eclipse, содержащий исходный код и полученный скомпилированный APK здесь.

Затем вы использовали бы мой плагин, чтобы переопределить поведение по умолчанию кнопки "Назад" примерно так:

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);

Здесь исходный код плагина:

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"/>