これはしばらくの間私に気が狂っています。
Androidアプリケーションでホームボタンが押されたかどうかを確実に検出する方法はありますか?
それが失敗した場合、何が原因でアクティビティがonPauseになったかを確認する強力な方法はありますか?つまり、それが新しいアクティビティの起動によるものか、back / homeによるものかを検出できますか。
onPause()をオーバーライドしてisFinishing()を呼び出すことが提案されていますが、ホームボタンを押すとfalseが返され、新しいアクティビティが開始する場合と同じように、2つのアクティビティを区別できません。
どんな助けも大歓迎です。
**更新**:このリンクを@ android-hungryに感謝:https : //nishandroid.blogspot.com/
次のメソッドをオーバーライドします。
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
次に、次のイベントがホームボタンを押すと発生します。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
この行に副作用があるかどうかはわかりません:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
そのため、一般的な考えに反して、実際にはホームキーを聞くことができます。心配なことに、falseを返し、ホームキーに何もさせないことができます。
更新:予想通り、これにはいくつかの副作用があります-このモードを有効にすると、埋め込みビデオとGoogleマップが表示されないようです。
更新:このハッキングはAndroid 4.0以降では機能しないと思われます
Activity.onUserLeaveHint()
。