0

我正在制作一个隐私至关重要的应用程序。因此,有一个密码可以进入该应用程序。现在,问题出在用户按下 HOME 按钮时 - 然后,当前任务被带到后台并显示 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();

代码中的过程。但它不会发生。是否无法控制主页按钮的功能,或者我错过了什么?

谢谢!

4

4 回答 4

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 被自动带到前台时,被中断的 Activity 不会调用 onUserLeaveHint() . 如果调用它,则在活动的 onPause() 回调之前调用此方法。

这个回调和 onUserInteraction() 旨在帮助活动智能地管理状态栏通知;具体来说,用于帮助活动确定取消通知的适当时间。

于 2013-07-15T11:17:01.853 回答
0

尝试使用以下代码。

@Override
protected void onUserLeaveHint() 
{ 
    super.onUserLeaveHint();
    Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();
}
于 2013-07-15T11:15:38.923 回答
0

在每个意图中,您都可以添加标志,例如

intent.addFlag(Intent.FLAG_NO_HISTORY);

一旦进入后台,它就会完成页面。

于 2013-07-15T11:22:05.380 回答
0

主页按钮从您的应用程序中获取控制权并将用户导航到主屏幕。此外,您正在显示的 toast 属于您的应用程序的上下文。因此,您无法控制它。

于 2013-07-15T11:23:33.577 回答