本文實例講述了Android4.0.x Home鍵事件攔截監聽的方法。分享給大家供大家參考,具體如下:
在2.3.x 的主要做法如下,具體實現網上有很多文章
@Overridepublic void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow();}代碼移植到4.0.1后 this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 這行報錯,
錯誤提示:java.lang.IllegalArgumentException: Window type can not be changed after the window is added。
可以有兩種處理方式
方法一、修改PhoneWindowManager.java
if (keyCode == KeyEvent.KEYCODE_HOME) { //在這里發送一個廣播出去}在應用里接收到廣播后做相應處理,一般是做手機項目才會去改源碼。
方法二、檢測log,根據log判斷是否有點擊Home鍵
private boolean isTesting = true;class CatchLogThread extends Thread { @Override public void run() { Process mLogcatProc = null; BufferedReader reader = null; String line; while (isTesting) { try { // 獲取logcat日志信息 mLogcatProc = Runtime.getRuntime().exec(new String[] { "logcat", "ActivityManager:I *:S" }); reader = new BufferedReader(new InputStreamReader(mLogcatProc.getInputStream())); while ((line = reader.readLine()) != null) { if (line.indexOf("android.intent.category.HOME") > 0) { isTesting = false; handler.sendMessage(handler.obtainMessage()); Runtime.getRuntime().exec("logcat -c");//刪除日志 break; } } } catch (Exception e) { e.printStackTrace(); } } }};Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { Log.i(TAG,"Home key press"); //do something here };};更多關于Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答
圖片精選