gpt4 book ai didi

android - Ice Cream Sandwich 处理的主页键

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:30 24 4
gpt4 key购买 nike

通过该代码,我成功地处理了 4.0 以下版本的 HomeKey,但我在处理 4.0 更高版本的 Homekey 时遇到了问题。所以请帮我解决这个问题以处理 4.0 版以上的 HomeKey press。因为它没有禁用 Home press。

@Override
public void onAttachedToWindow()
{
// TODO Auto-generated method stub
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH)
{
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

}

最佳答案

正如@j__m 所说,TYPE_KEYGUARD 不再受支持。还有许多其他方法已经在其他问题上进行了讨论,但在最新的 API 级别中不起作用。我会节省您的精力,并想分享我所做的一些搜索、试验和错误。我尝试了很多方法,但在 API 级别 17 中没有一个对我有用。我尝试了

上的答案

Call method when home button pressed on android ,

Detect home button press in android

一些我试过(包括上面的答案)但没用的是:

  1. 以多种方式使用 keyCode==KeyEvent.KEYCODE_HOME综上所述。现在,如果你阅读了文档 KeyEvent.KEYCODE_HOME ,它说 This key is handled by the
    框架,永远不会交付给应用程序
    。所以它不再现在有效。

  2. 我尝试使用 onUserLeaveHint()文档说:
    当 Activity 即将开始时作为 Activity 生命周期的一部分调用
    根据用户选择进入后台。
    例如,
    当用户按下 Home 键时,onUserLeaveHint() 将被
    调用,
    但是当来电导致通话中的 Activity
    自动带到前台

    如果您没有从当前 Activity 中调用任何 Activity ,而您正在检测主页按钮,那么您可能能够使用这种方法。是当您启动 Activity 时也会调用该方法在您调用 onUserleaveLint() 的 Activity 中,就像我的情况一样。参见 Android onBackPressed/onUserLeaveHint问题更多。所以不确定只能通过按主页按钮调用它。

最后以下对我有用:

看到How to check current running applications in Android? ,你可以说如果你的是长按主页按钮时显示的最近任务,那么它被发送到后台。(即主页按钮被按下)。

因此,在您尝试检测按下主页按钮的 Activity 的 onPause() 中,您可以检查应用程序是否已发送到后台。

@Override
public void onPause() {
if (isApplicationSentToBackground(this)){
// Home button pressed
// Do what you want to do on detecting Home Key being Pressed
}
super.onPause();
}

判断你的是不是最近送后台的app的函数:

public boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}

使用它我能够成功地检测到 Home Button 点击。希望这对你也有用。

关于android - Ice Cream Sandwich 处理的主页键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17801740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com