问题:我正在编写一个应用程序,希望从意外退出中保存用户。例如,不小心单击主键并退出应用程序。因此,当用户按下Home键时,我想向他们显示一个对话框,询问他们是否真的要退出应用程序?如果用户选择是,则退出。否则,请继续使用该应用程序。
我已经尝试并看到了几乎所有关于堆栈溢出的示例,但是还没有对我有用。任何建议都是最欢迎的。
应用程序的最低SDK版本= 12应用程序的目标SDK版本= 28
非工作代码:
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("Anil: onKeyDown(): Got a Home Key.");
}
System.out.println("Anil: onKeyDown(): keyCode = " + keyCode);
return super.onKeyDown(keyCode, event);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
System.out.println("Anil: dispatchKeyEvent(): Got a Home Key.");
}
System.out.println("Anil: dispatchKeyEvent(): keyCode = " + event.getKeyCode());
return super.dispatchKeyEvent(event);
}
}
即使更改了窗口类型,它也无法正常工作!你们对我该怎么做有任何想法吗?
为主页按钮创建单独的类和广播接收器。在您的侦听器的主要活动中使用接口,给定清晰的解决方案here