9. 自定义HOME按键

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

猜你喜欢

转载自blog.csdn.net/qq_41121204/article/details/82992572