2012-05-11 13 views
5

是否可以手动暂停Android PhoneGap应用程序?当有人点击一个按钮时,我需要暂停应用程序并转到后台。我使用navigator.app.exitApp();,但它完全关闭了应用程序。我不想关闭应用程序,就像使用本地后退按钮一样卸载应用程序。请帮忙,谢谢。在Android手动暂停应用程序Phonepotgap

+0

你是什么意思与暂停?也许看看Activites Lifecircle的原因我不知道你试图达到什么:) http://developer.android.com/guide/topics/fundamentals/activities.html – yoshi

+0

我需要暂停/停止活动(该应用程序不应该在forground中可见),应用程序不应该像我们点击本地后退按钮时那样可见,它会隐藏应用程序。 –

+1

基本上你想要的是一样的行为,就好像有人按下主页按钮一样正确吗? –

回答

1

在你的JavaScript:

// HomeButton 
cordova.define("cordova/plugin/homebutton", function (require, exports, module) { 
    var exec = require("cordova/exec"); 
    module.exports = { 
     show: function (win, fail) { 
      exec(win, fail, "HomeButton", "show", []); 
     } 
    }; 
}); 

和:

// HomeButton 
function homeButton() { 
    var home = cordova.require("cordova/plugin/homebutton"); 
    home.show(
     function() { 
      console.info("PhoneGap Plugin: HomeButton: callback success"); 
     }, 
     function() { 
      console.error("PhoneGap Plugin: HomeButton: callback error"); 
     } 
    ); 
} 

在Java上的Android原生:

homeButton(); 

package org.apache.cordova.plugins; 

import org.apache.cordova.api.CallbackContext; 
import org.apache.cordova.api.CordovaPlugin; 
import org.apache.cordova.api.PluginResult; 
import org.json.JSONArray; 

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

public class HomeButton extends CordovaPlugin { 

    public static final String LOG_PROV = "PhoneGapLog"; 
    public static final String LOG_NAME = "HomeButton Plugin"; 

    @Override 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { 
     Log.d(LOG_PROV, LOG_NAME + ": Simulated home button."); 
     Intent i = new Intent(Intent.ACTION_MAIN); 
     i.addCategory(Intent.CATEGORY_HOME); 
     this.cordova.startActivityForResult(this, i, 0); 
     callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK)); 
     return true; 
    } 

} 

与说它

它的工作原理,是我的一个回购协议的一部分:https://github.com/teusinkorg/jpHolo/

+0

谢谢,它像魔术一样工作 –

3

这里有一个解决方案,它类似于兰Teusink的回答,但容易,因为你并不需要手动编辑Java代码 - 只需安装与插件phonegap/cordova CLI。

插件一个函数:goHome()。如果你打电话给这个,应用程序将暂停 - 就像按主页按钮一样。

用法:

navigator.Backbutton.goHome(function() { 
    console.log('success - the app will now pause') 
}, function() { 
    console.log('fail') 
}); 

安装:

的PhoneGap本地插件添加https://github.com/mohamed-salah/phonegap-backbutton-plugin.git

这里是GitHub的页面:

https://github.com/mohamed-salah/phonegap-backbutton-plugin.git