編輯:關於Android編程
本文實例講述了Android4.0.x Home鍵事件攔截監聽的方法。分享給大家供大家參考,具體如下:
在2.3.x 的主要做法如下,具體實現網上有很多文章
@Override
public 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程序設計有所幫助。
android 對話框彈出位置和透明度的設置具體實現方法
例如,屏幕的上方或下方。要實現這種效果。就需要獲得對話框的Window對象,獲得這個Window對象有多種方法。最容易的就是直接通過AlertDialog類的getWin
關於Android的Button響應頁面跳轉問題
一般來說,Android應用程序中的Button響應事件有兩種書寫方式 Button button=null; button.setOnClickListener(n
Android中讓圖片自適應控件的大小的方法
這就需要把.png格式的圖片轉成.9.png格式,.9.png就是後綴名。在安裝Android-SDK時自帶了<draw9patch.bat>可以把.png格
美團Android資源混淆保護的具體實踐
原文章美團Android資源混淆保護實踐,但是該文章並沒有給出具體的混淆方案,只是放了一個函數,函數的實現過程需要自己去實現,本篇文章也並沒有實現該函數,只是對實現該函數