在 Android 中打开对话框时拦截 HOME 键
Posted
技术标签:
【中文标题】在 Android 中打开对话框时拦截 HOME 键【英文标题】:Intercept HOME key while dialog is opened in Android 【发布时间】:2012-01-28 08:35:09 【问题描述】:如何在android屏幕上打开对话框时拦截HOME键。??
【问题讨论】:
在您的问题本身中,我可以看到很多问题。到目前为止你尝试过什么?您面临的问题是什么?等等…… 在屏幕上打开Dialog时,在此期间,如何拦截Home Key? 由于缺乏解释,您的问题很快就会被关闭。所以,最好是修改您的问题并针对您的问题。 【参考方案1】:根据 android 实现,您无法使用 OnKeyListener() 等简单 API 捕获 Home 按钮键事件。
【讨论】:
【参考方案2】:我得到了我的问题的解决方案。现在我可以按照我想要的方式成功拦截 HOME 按钮。我已在此博客中编写了所有步骤: https://nishandroid.blogspot.com/2012/01/intercept-home-key-android.html
【讨论】:
您在博客中提到的内容在我使用 ics 的情况下不起作用。【参考方案3】:如果您想通过确定用户是否故意移出您的Activity
来正确管理Activity
中的对话框外观(点击back
或home
按钮)
或无意中让其他活动隐藏了您的活动(例如来电)
使用onUserLeaveHint
。
例如:
@Override
protected void onUserLeaveHint()
super.onUserLeaveHint();
mDialog.dismiss();
【讨论】:
onUserLeaveHint
是不调用的无意中断。来自文档:“例如,当用户按下 Home 键时,会调用 onUserLeaveHint(),但是当有来电导致通话中的 Activity 自动被带到前台时,不会调用 onUserLeaveHint()关于被打断的活动。"【参考方案4】:
设置对话框的DialogInterface.OnKeyListener
new OnKeyListener()
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_HOME)
//do something
return false;
);
【讨论】:
以上方法没用。应用此方法无法解决问题。 @aNi 我最近使用 KeyDown 方法和 KeyEvent.KEYCODE_HOME 来检测 home 按键但它从未给 android 应用程序它是用于 Android 系统框架的。以上是关于在 Android 中打开对话框时拦截 HOME 键的主要内容,如果未能解决你的问题,请参考以下文章
android 对话框Dialog拦截activity事件通知