我正在创建一个隐私至关重要的应用。因此,有一个密码可以进入该应用程序。 现在,问题在于用户按下HOME按钮 - 然后,当前任务被带到后台并显示android主屏幕。
但是当用户点击Android设备上的应用程序图标时,应用程序将返回相同的私有状态,而不会要求输入密码。
我想让应用程序始终只在按下应用程序图标时才能从登录活动开始。
在我的每一项活动中,我都有以下代码:
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
但是,吐司永远不会被展示......同样,我试图
finish();
代码中的过程。但它不会发生。 是不是可以控制主页按钮的功能,或者我错过了什么?
谢谢!
答案 0 :(得分:1)
这是不可能的。
除非您将应用设置为主屏幕,否则无法拦截Android上的主页按钮。这是出于安全原因,因此恶意应用程序无法通过覆盖可以退出的所有按钮来接管您的设备。
如果您想处理HOME按钮,请实现主屏幕。
但我建议你重新考虑你的设计。将退出选项留给用户。
http://developer.android.com/training/design-navigation/index.html
查看Gmail应用程序。当您按主页按钮时,它不会注销。
@Override
protected void onUserLeaveHint()
{
super.onUserLeaveHint();
Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();
Log.i("Home button Pressed!", "Yes");
finish();
}
您可以使用onUserLeaveHint
protected void onUserLeaveHint ()
在API级别3中添加
当活动即将作为用户选择的结果进入后台时,被称为活动生命周期的一部分。 例如,当用户按下Home键时,将调用onUserLeaveHint(),但是当传入的电话呼叫导致调用中的Activity自动被带到前台时,onUserLeaveHint()将不会被调用。活动被中断。在调用它的情况下,在活动的onPause()回调之前调用此方法。
此回调和onUserInteraction()旨在帮助活动智能地管理状态栏通知;特别是,帮助活动确定取消通知的适当时间。
答案 1 :(得分:0)
尝试使用以下代码。
@Override
protected void onUserLeaveHint()
{
super.onUserLeaveHint();
Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();
}
答案 2 :(得分:0)
在每个意图中,您都可以添加标记
intent.addFlag(Intent.FLAG_NO_HISTORY);
一旦页面进入后台,它就会完成。
答案 3 :(得分:0)
主页按钮从您的应用程序中获取控件并将用户导航到主屏幕。 此外,您正在显示的吐司属于您的应用程序的上下文.. 所以,你无法控制它。