編輯:關於Android編程
Android 解決監聽home鍵的幾種方法
前言:
以下兩種方法可以完美解決監聽back鍵,home鍵,多任務鍵(最近任務鍵)。
一、使用注冊廣播監聽home鍵、多任務鍵
演示圖

創建一個廣播代碼如下:
class InnerRecevier extends BroadcastReceiver {
final String SYSTEM_DIALOG_REASON_KEY = "reason";
final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if (reason != null) {
if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
Toast.makeText(MainActivity.this, "Home鍵被監聽", Toast.LENGTH_SHORT).show();
} else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
Toast.makeText(MainActivity.this, "多任務鍵被監聽", Toast.LENGTH_SHORT).show();
}
}
}
}
}
在Activity中的onCreate()方法中注冊廣播,代碼如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//創建廣播
InnerRecevier innerReceiver = new InnerRecevier();
//動態注冊廣播
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
//啟動廣播
registerReceiver(innerReceiver, intentFilter);
}
這樣的話,就ok了。這種方式能對home鍵與多任務鍵實現全盤監聽,但你無法去屏蔽系統的行為。
二、重寫onKeyDown()監聽、屏蔽back鍵、home鍵
在Activity中重寫onKeyDown(),代碼如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Toast.makeText(MainActivity.this, "返回鍵無效", Toast.LENGTH_SHORT).show();
return true;//return true;攔截事件傳遞,從而屏蔽back鍵。
}
if (KeyEvent.KEYCODE_HOME == keyCode) {
Toast.makeText(getApplicationContext(), "HOME 鍵已被禁用...", Toast.LENGTH_SHORT).show();
return true;//同理
}
return super.onKeyDown(keyCode, event);
}
在Activity中onCreate()中添加代碼,代碼如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在setContentView之前添加,未添加的話home鍵監聽無效,設置窗體屬性
this.getWindow().setFlags(0x80000000, 0x80000000);
setContentView(R.layout.activity_main);
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
Android百度地圖、高德地圖、騰訊地圖導航路線規劃問題
在最近的項目中,需求是用戶選擇某個地址需要進行導航時,彈出百度地圖、高德地圖和騰訊地圖讓用戶選擇。如果該用戶手機中已安裝對應的地圖App,則啟動對應軟件進行導航,否則跳轉
ImageLoader
這次做一個圖片加載器,裡面涉及到線程池,bitmap的高效加載,LruCache,DiskLruCache。接下來我先介紹這四個知識點一.線程池優點:(1)重用線程池中的
Android搶紅包助手開發全攻略
背景:新年之際,微信微博支付寶紅包是到處飛,但是,自己的手速總是比別人慢一點最後導致紅包沒搶到,紅包助手就應運而生。需求:收到紅包的時候進行提醒,然後跳轉到紅包的界面方便
深入理解Activity啟動流程
深入理解Activity啟動流程(一)–Activity啟動相關類的類圖Activity啟動時的概要交互流程用戶從Launcher程序點擊應用圖標