Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
我们可以在很多应用中都能看到按两次返回键退出 , 其实这个功能实现很容易, 下面就是实现的代码 , 把它放到你的程序中你的程序就能按两次返回键退出啦 , 这个功能是为了避免误点而把程序退出了 ,给你的程序也加上这个简单实用的功能把 :
import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.view.KeyEvent; import android.view.WindowManager; import android.widget.Toast; public class MainActivity extends Activity { private long mExitTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); setContentView(R.layout.activity_main); } public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if ((System.currentTimeMillis() - mExitTime) > 2000) {// System.currentTimeMillis()无论何时调用,肯定大于2000 Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); mExitTime = System.currentTimeMillis(); } return true; } else if (keyCode == KeyEvent.KEYCODE_MENU) { System.out.println("您按了菜单键"); CreatAlertDialog("您按了菜单键"); Toast.makeText(this, "您按了菜单键", Toast.LENGTH_SHORT).show(); return true; } else if (keyCode == KeyEvent.KEYCODE_HOME) { // 由于Home键为系统键,此处不能捕获,需要重写onAttachedToWindow() System.out.println("您按了HOME键"); CreatAlertDialog("您按了HOME键"); Toast.makeText(this, "您按了HOME键", Toast.LENGTH_SHORT).show(); return true; } return super.onKeyDown(keyCode, event); } private void CreatAlertDialog(String str){ new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher) .setMessage(str) .show(); } }
拦截/屏蔽系统Home键
//屏蔽HOME键 public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
不要让昨天的沮丧 让今天的梦想黯然失色
成功的人总是修改方法而不修改目标
微信公众号:javenlife