public boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
@Override
public void onStop() {
if (isApplicationSentToBackground(this)){
//put your code here what u want to do
}
super.onStop();
}
8条答案
按热度按时间myzjeezk1#
重写下面的方法。
使用这个方法,HOME按钮在这个活动中停止工作(仅限这个活动),然后你只需重新实现它,就像它是一个普通的按钮事件一样(例如后退按钮)。
8oomwypt2#
输入
AndroidManifest.xml
您需要
launchMode="singleTask"
,以便将Intent交付给已在运行的应用,而不是创建新示例。在活动中:
您不会获得关键事件
jw5wzhpr3#
home键应该只做一件事,而且是始终如一的。让用户回到主屏幕。即使你可以覆盖它的行为,这也是一件非常不友好的事情。所以不要这样做,用不同的方法解决你的问题!
drkbr07n4#
这个答案将不再工作,从Android 4.0.
正确的解决方案是创建an app that can intercept the Home intent, as per @bara's answer below。
您可以像覆盖任何其他按钮一样覆盖主页按钮:
qojgxg4l5#
在活动中尝试此操作
nfs0ujit6#
如果有人需要检测和覆盖HOME按钮行为,请使用KOTLIN中的方法
dly7yett7#
不,我们不能覆盖主页按钮,但我资助了一个解决方案。
更改清单文件-
5sxhfpxr8#
为什么要控制HOME按钮的场景。我想创建一个自定义锁屏界面,用户在给安卓设备充电时可以使用。这样他们就必须扫描特定代码才能再次登录。让应用禁用这些按钮(这样用户就无法离开应用)可以让应用保持用户看到的主屏幕。