これはしばらくの間、私を夢中にさせてきました。
Androidアプリケーションでホームボタンが押されたかどうかを確実に検出する方法はありますか?
それができない場合、アクティビティが onPause になった原因を確実に伝える方法はありますか? つまり、新しいアクティビティの起動が原因なのか、戻る/ホームを押したことが原因なのかを検出できますか。
私が見た 1 つの提案は、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 以降では機能しなくなりました