Отправить приложение в фоновый режим, когда кнопка "Назад" нажата в Phonegap
У меня проблема с моим телефоном. Я хочу свернуть приложение (отправить приложение в фоновом режиме, чтобы он все еще работал), когда нажата кнопка "Назад".
Вот мой код.
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown() {
}
Если я использую navigator.app.exitApp();
- мое приложение завершится
и если я использую navigator.app.backhistory()
- он вернется к предыдущей странице.
Я хочу, чтобы, если я нажму кнопку "Назад", он отправит меня на главный экран и отправлю приложение на задний план, чтобы он все еще работал. Спасибо.
Ответы
Ответ 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"/>