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();    
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM