【发布时间】:2019-09-29 04:04:35
【问题描述】:
问题:
我正在编写一个应用程序,我想在其中保护用户免于意外退出。
例如,不小心点击了 home 键并退出了应用程序。
因此,当用户按下 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("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);
}
}
即使更改了窗口类型,它也无法正常工作!
你们有什么想法我该怎么做吗?
【问题讨论】:
标签: android android-homebutton