Ini telah membuatku gila untuk sementara waktu sekarang.
Adakah cara yang andal untuk mendeteksi jika tombol beranda telah ditekan di aplikasi Android?
Jika tidak, apakah ada cara yang tepat untuk mengetahui apa yang menyebabkan aktivitas masuk ke onPause? yaitu Bisakah kita mendeteksi apakah itu disebabkan oleh peluncuran aktivitas baru atau dengan menekan kembali / beranda.
Satu saran yang telah saya lihat adalah mengganti onPause () dan memanggil isFinishing () tetapi ini akan mengembalikan false saat menekan tombol beranda sama seperti jika aktivitas baru dimulai, jadi ini gagal untuk membedakan keduanya.
Setiap bantuan sangat dihargai.
** Pembaruan **: Terima kasih kepada @ android-hung untuk tautan ini: https://nishandroid.blogspot.com/
Mengatasi metode berikut:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Kemudian acara berikut AKAN dipicu untuk penekanan tombol beranda:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Saya tidak yakin apakah ada efek samping dengan baris ini:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Jadi tampaknya bertentangan dengan kepercayaan populer, Anda sebenarnya dapat mendengarkan kunci rumah. Yang mengkhawatirkan, Anda dapat mengembalikan false dan kunci beranda tidak melakukan apa pun.
Pembaruan : Seperti yang diharapkan, ada beberapa efek samping dengan ini - tampaknya video yang disematkan dan peta Google tidak terlihat dengan mode ini diaktifkan.
Pembaruan : Seharusnya peretasan ini tidak lagi berfungsi mulai Android 4.0 dan seterusnya
Activity.onUserLeaveHint()
.