android–Home key处理冰淇淋三明治

android–Home key处理冰淇淋三明治,第1张

概述通过该代码我成功处理低于4.0版本的HomeKey但我在上4.0版本处理Homekey时遇到问题.所以请帮我解决这个问题来处理上层4.0版本的HomeKey印刷机.因为它不能禁用Homepress.@OverridepublicvoidonAttachedToWindow(){//TODOAuto-generatedmethodstub

通过该代码我成功处理低于4.0版本的HomeKey但我在上4.0版本处理Homekey时遇到问题.所以请帮我解决这个问题来处理上层4.0版本的HomeKey印刷机.因为它不能禁用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和

我试过的一些(包括上面的答案)并且没有工作的是:

>在许多方面使用keyCode == KeyEvent.KEYCODE_HOME
综上所述.现在,如果您阅读了文档
KeyEvent.KEYCODE_HOME,它说这个键是由
框架,永远不会交付给应用程序.所以它不再
现在有效.
>我尝试使用onUserLeaveHint().文件说:
在活动开始时被称为活动生命周期的一部分
作为用户选择的结果进入后台.例如,
当用户按下Home键时,onUserLeaveHint()将会出现
呼叫,但当来电时导致呼叫中的活动
自动带到前台.

如果您没有在当前活动中调用任何活动,那么您可能会检测主页按钮
能够使用这种方法.这个问题
是在启动Activity时也会调用该方法
从您调用onUserleavelint()的活动中,
就像我的情况一样.有关详细信息,请参阅Android onBackPressed/onUserLeaveHint问题.所以它不确定
只需按回车键即可拨打电话.

最后,以下内容对我有用:

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

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

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

用于检查您的应用是否是最近发送到后台的应用的功能:

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;}

使用此功能,我成功​​检测到主页按钮单击.
希望这也适合你.

总结

以上是内存溢出为你收集整理的android – Home key处理冰淇淋明治全部内容,希望文章能够帮你解决android – Home key处理冰淇淋三明治所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1117844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存