我想在用户按下主页按钮时终止应用程序。有没有办法在Android上做到这一点?
答案 0 :(得分:2)
按Home键时,您的应用会隐藏并调用onStop
方法,因此您可以使用finish
方法调用onStop
。
但如果另一个应用程序位于您的应用程序前面,您的应用程序也会隐藏,因此无法正确识别Home或其他应用程序,因此建议使用如下:
static final String SYSTEM_DIALOG_REASON_KEY = "reason";
static final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
static final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if (reason != null) {
Lg.i("receive action:" + action + ",reason:" + reason);
if (mListener != null) {
if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
mListener.onHomePressed();
} else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
mListener.onHomeLongPressed();
}
}
}
}
}
}
这是补码HomeWatcher
答案 1 :(得分:1)
我通过覆盖Activity.onUserLeaveHint()
实现了类似的功能。一旦按下主页键就会调用此方法,但我认为现在我记不起一些警告了。也就是说它在我不希望我的应用程序完成的情况下被调用,并且必须放置标志以防止不必要的退出。
答案 2 :(得分:0)
答案 3 :(得分:0)
你可以试试这个:
@Override
public void onUserLeaveHint() {
finish();
}
您可以在此处找到更多详细信息:
http://tech.chitgoks.com/2011/09/05/how-to-override-back-home-button-in-an-android-app/
答案 4 :(得分:0)
如果您不编写自己的家庭应用程序 - 请勿对家庭或后退按钮提供任何特殊操作。阅读this question and answer以获得有关您不需要此内容的详细解释
答案 5 :(得分:-2)
JoxTraex的回答是正确的,但可能指定您可以捕获主页按钮,以便能够对您想要的活动执行完成:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Handle the back button
if (keyCode == KeyEvent.KEYCODE_HOME) {
finish();
}
}
评论是对的,我刚试过 KeyEvent.KEYCODE_BACK 抱歉! 然后我会尝试覆盖每个活动的onStart()和onStop()函数,以了解我的应用程序上何时没有打开任何活动。