The Problem:
I am writing an app where I want to save user from accidental exits.
For example, accidentally clicking on home key and exiting from app.
So when user presses Home key, I want to show them a dialog box asking if they really want to exit from app?
If user selects yes, then exit.
Otherwise just stay on the app.
I've tried and seen almost all the examples on stack overflow but non have worked for me yet.
Any suggestion is most welcome.
min Sdk Version for app = 12
target Sdk Version for app = 28
Non-working Code:
package com.tivo.homebutton;
import androidx.appcompat.app.AppCompatActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.WindowManager;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setType((WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG));
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
System.out.println("onKeyDown(): Got a Home Key.");
}
System.out.println("onKeyDown(): keyCode = " + keyCode);
return super.onKeyDown(keyCode, event);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
System.out.println("dispatchKeyEvent(): Got a Home Key.");
}
System.out.println("dispatchKeyEvent(): keyCode = " + event.getKeyCode());
return super.dispatchKeyEvent(event);
}
}
It's just not working even after changing the window type!
Do you guys have any idea on how can I make it?