สิ่งนี้ทำให้ฉันคลั่งไคล้มาระยะหนึ่งแล้ว
มีวิธีใดในการตรวจจับได้อย่างน่าเชื่อถือว่ามีการกดปุ่มโฮมในแอปพลิเคชัน Android หรือไม่?
หากล้มเหลวมีวิธีที่ชัดเจนในการบอกว่าอะไรทำให้กิจกรรมเข้าสู่ onPause หรือไม่? เช่นเราสามารถตรวจสอบได้ว่าเกิดจากการเปิดตัวกิจกรรมใหม่หรือโดยการกดกลับ / home
คำแนะนำอย่างหนึ่งที่ฉันเห็นคือการแทนที่ onPause () และเรียก isFinishing () แต่สิ่งนี้จะส่งคืนเป็นเท็จเมื่อกดปุ่มโฮมเช่นเดียวกับที่จะทำหากกิจกรรมใหม่กำลังเริ่มต้นดังนั้นจึงไม่สามารถแยกความแตกต่างระหว่างทั้งสองได้
ความช่วยเหลือใด ๆ ที่ชื่นชมมาก
** อัปเดต **: ขอบคุณ @ android- หิวสำหรับลิงค์นี้: 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);
ดังนั้นดูเหมือนว่าจะตรงกันข้ามกับความเชื่อที่เป็นที่นิยมในความเป็นจริงคุณสามารถฟังกุญแจบ้านได้ ไม่ต้องกังวลคุณสามารถคืนค่าเท็จและให้คีย์โฮมไม่ต้องทำอะไรเลย
อัปเดต : ตามที่คาดไว้มีบางด้านที่ส่งผลกระทบต่อสิ่งนี้ดูเหมือนว่าวิดีโอที่ฝังและแผนที่ Google จะไม่สามารถมองเห็นได้เมื่อเปิดใช้งานโหมดนี้
อัปเดต : สมมติว่าแฮ็คนี้ใช้ไม่ได้ตั้งแต่ Android 4.0 เป็นต้นไป
Activity.onUserLeaveHint()
.