홈 버튼을 가로 챌 수 없지만 응용 프로그램 시작 활동을 홈 인 텐트/기본 홈 활동으로 만드는 것이 좋습니다. 당신의 XML 매니페스트에서,이 같은 것 : 사용자가 홈 버튼을 누를 때
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
그래서, 앱의 시작 활동에 사용자를 이끌 것입니다, 당신은 다른 그를 리디렉션 할 수 여기에서 이전 활동, 즉 사용자의 상태를 미리 저장합니다. 위에서 언급 한 활동에서 경고음이 발생하는 곳에서 onPause 또는 onWindowFocusChanged에 중지 명령을 배치해야합니다.
위의 접근 방식은 응용 프로그램 논리/비즈니스 사례와 배포하려는 환경에 따라 다르지만 경우에 따라 다릅니다.
우리는 앱이 항상 번들로 제공되고 기기와 함께 배포되는 애플리케이션 (홈 버튼 처리)에서이 접근 방식을 사용했습니다. 어쨌든 우리는 장치 설정을 완전히 제어 할 수 있습니다. 자신의 활동을 기본 홈 활동으로 설정하면 사용자는 처음에 활동이 홈 인 텐트 (기본 Android 홈 또는 앱 활동)를 처리해야하는 질문과 함께 옵션 화면을 얻게됩니다. 그런 다음 사용자가 선택할 수 있으며 나중에 다시 묻지 않고이 활동을 기본 활동으로 사용할 체크 박스를 선택할 수 있습니다.
일반 시장 용 일반 앱의 경우 이는 불편 함이 적고 좋은 스크린 플로우/사용자 경험이 아니기 때문에 최선의 방법은 아닙니다. 완전하게 제어 할 수있는 앱의 경우 적절한 해결 방법 일 수 있습니다.
홈 버튼을 캡처하려면 android.policy.jar에있는 PhoneWindowManager.java 클래스의 Android OS를 수정해야합니다. 그러나 이는 기기를 완벽하게 제어하고 앱을 기기와 함께 묶어 두거나 기기를 사용자에게 제공하고 어떤 ROM을 배포할지 제어하는 내부 애플리케이션 인 경우에만 의미가 있습니다. http://www.anddev.org/home_menu_button-t10232.html