Android 解決監(jiān)聽home鍵的幾種方法
Android 解決監(jiān)聽home鍵的幾種方法
前言:
以下兩種方法可以完美解決監(jiān)聽back鍵,home鍵,多任務(wù)鍵(最近任務(wù)鍵)。
一、使用注冊(cè)廣播監(jiān)聽home鍵、多任務(wù)鍵
演示圖
創(chuàng)建一個(gè)廣播代碼如下:
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鍵被監(jiān)聽", Toast.LENGTH_SHORT).show(); } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) { Toast.makeText(MainActivity.this, "多任務(wù)鍵被監(jiān)聽", Toast.LENGTH_SHORT).show(); } } } } }
在Activity中的onCreate()方法中注冊(cè)廣播,代碼如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //創(chuàng)建廣播 InnerRecevier innerReceiver = new InnerRecevier(); //動(dòng)態(tài)注冊(cè)廣播 IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); //啟動(dòng)廣播 registerReceiver(innerReceiver, intentFilter); }
這樣的話,就ok了。這種方式能對(duì)home鍵與多任務(wù)鍵實(shí)現(xiàn)全盤監(jiān)聽,但你無法去屏蔽系統(tǒng)的行為。
二、重寫onKeyDown()監(jiān)聽、屏蔽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鍵監(jiān)聽無效,設(shè)置窗體屬性 this.getWindow().setFlags(0x80000000, 0x80000000); setContentView(R.layout.activity_main); }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android Studio使用教程(五):Gradle命令詳解和導(dǎo)入第三方包
這篇文章主要介紹了Android Studio使用教程(五):Gradle命令詳解和導(dǎo)入第三方包,本文講解了導(dǎo)入Android Studio、Gradle常用命令等內(nèi)容,需要的朋友可以參考下2015-05-05Android四大組件:Activity/Service/Broadcast/ContentProvider作用示例
Android是一種基于Linux,自由及開放源代碼的操作系統(tǒng),Android分為四個(gè)層,從高層到底層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層,Android有四大基本組件:Activity、Service服務(wù)、BroadcastReceiver廣播接收器、Content Provider內(nèi)容提供者2023-11-11Android基于繪制緩沖實(shí)現(xiàn)煙花效果
這篇文章主要介紹了Android基于繪制緩沖實(shí)現(xiàn)煙花效果,文中通過代碼示例和圖文結(jié)合介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的同學(xué)可以自己動(dòng)手嘗試一下2024-03-03ListView實(shí)現(xiàn)下拉刷新加載更多的實(shí)例代碼(直接拿來用)
這篇文章主要介紹了ListView實(shí)現(xiàn)下拉刷新加載更多的實(shí)例代碼(直接拿來用)的相關(guān)資料,需要的朋友可以參考下2016-07-07一些有效的Android啟動(dòng)優(yōu)化策略分享
在當(dāng)今激烈競爭的移動(dòng)應(yīng)用市場,應(yīng)用的啟動(dòng)速度直接影響著用戶的第一印象和滿意度,Android的啟動(dòng)優(yōu)化是開發(fā)者必須關(guān)注的關(guān)鍵領(lǐng)域,本文將詳細(xì)介紹一些強(qiáng)大有效的Android啟動(dòng)優(yōu)化策略,幫助你優(yōu)化應(yīng)用的啟動(dòng)過程,為用戶創(chuàng)造更出色的體驗(yàn),需要的朋友可以參考下2023-08-08Fedora14下android開發(fā): eclipse與ibus確有沖突的問題分析
本篇文章是對(duì)Fedora14下android開發(fā),eclipse與ibus確有沖突的問題進(jìn)行了分析介紹,需要的朋友參考下2013-05-05