9.1 问题
应用程序需要实现与按下物理HOME按键一样的功能。
9.2 解决方案
用户按下HOME按键的行为会发送一个Intent给系统,要求系统加载Home Activity。这与在应用程序中启动其他的Activity并没有什么区别,你要做的就是构建合适的Intent以实现该效果。
9.3 实现机制
把下面这几行代码添加到Activity中要实现该功能的地方:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
该功能的一个常见用途就是重载BACK按键,让用户按下此按键时直接返回主屏幕而不能回到前一个Activity。当要保护前台Activity之前的Activity(例如登录界面)时,这是很有用的方法。如果执行BACK按键的默认行为,就要可能会让用户在未授权的情况下访问系统。
要点:
在修改系统按键的行为时,务必确保不会扰乱用户对此按键所完成动作的预期。
下面这个示例利用前两个范例中结束的技术,实现了在Activity中按下BACK按键时返回到主屏幕的行为:
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
网友评论