1. 程式人生 > >Android 改寫返回鍵事件監聽,使得back鍵功能類似home鍵,讓Acitivty退至後臺時不被系統銷燬

Android 改寫返回鍵事件監聽,使得back鍵功能類似home鍵,讓Acitivty退至後臺時不被系統銷燬

現在很多程式要求back鍵不是退出程式而是像home鍵一樣讓Acitivty退至後臺時不被系統銷燬,查到的資料大多說都是繼承activity的沒有繼承TabActivity,

TabActivity和activity不能一樣處理,廢話不多說了上程式碼。

繼承activity的

/**
	 * 返回監聽
	 */
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO 監聽返回鍵,相當於點選home鍵
		PackageManager pm = getPackageManager();
		ResolveInfo homeInfo = pm.resolveActivity(
				new Intent(Intent.ACTION_MAIN)
						.addCategory(Intent.CATEGORY_HOME), 0);
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			ActivityInfo ai = homeInfo.activityInfo;
			Intent startIntent = new Intent(Intent.ACTION_MAIN);
			startIntent.addCategory(Intent.CATEGORY_LAUNCHER);
			startIntent
					.setComponent(new ComponentName(ai.packageName, ai.name));
			startActivitySafely(startIntent);
			return true;
		} else
			return super.onKeyDown(keyCode, event);
	}

繼承TabActivity的
@Override
	public boolean dispatchKeyEvent(KeyEvent event) {
		PackageManager pm = getPackageManager();
		ResolveInfo homeInfo = pm.resolveActivity(
				new Intent(Intent.ACTION_MAIN)
						.addCategory(Intent.CATEGORY_HOME), 0);
		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
				&& event.getAction() == KeyEvent.ACTION_DOWN) {
			ActivityInfo ai = homeInfo.activityInfo;
			Intent startIntent = new Intent(Intent.ACTION_MAIN);
			startIntent.addCategory(Intent.CATEGORY_LAUNCHER);
			startIntent
					.setComponent(new ComponentName(ai.packageName, ai.name));
			startActivitySafely(startIntent);
			return false;
		}
		return super.dispatchKeyEvent(event);
	}

private void startActivitySafely(Intent intent) {
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		try {
			startActivity(intent);
		} catch (ActivityNotFoundException e) {
			Toast.makeText(this, "ActivityNotFoundExceptionnull",
					Toast.LENGTH_SHORT).show();
		} catch (SecurityException e) {
			Toast.makeText(this, "SecurityExceptionnull", Toast.LENGTH_SHORT)
					.show();
		}
	}


相關推薦

Android 改寫返回事件使得back功能類似homeAcitivty退後臺系統銷燬

現在很多程式要求back鍵不是退出程式而是像home鍵一樣讓Acitivty退至後臺時不被系統銷燬,查到的資料大多說都是繼承activity的沒有繼承TabActivity, TabActivity和activity不能一樣處理,廢話不多說了上程式碼。 繼承activity

HTML5 瀏覽器返回按鈕/手機返回按鈕事件

手機 鎖定 listitem con 按鈕 spa color cnblogs java 1.HTML5 History對象 支持使用pushState()方法修改地址欄地址,而不刷新頁面。 popstate事件 當history實體被改變時,popstate事件將會發生

Android View的onClick事件

點選事件 Android中Touch事件相關內容都被封裝到 MotionEvent 中,MotionEvent 中的時間型別有按下、擡起、滑動和結束事件。這些事件都是人機互動的一個過程,按下動作指的是人手指按在手機螢幕上這個動作,擡起動作指的是人手指按下手機後擡起來這個動作

Android 拍照 截圖 事件實現

需求是獲得使用者截圖,或者拍照的主動存圖行為。 但是 android 官方沒有提供回撥廣播之類的實現監聽,所以需要用另一種方式達到需求,這裡實現的就是通過監聽media資料夾實現目的。 所需許可權:  <uses-permission android:name="an

返回處理back功能類似home

//返回鍵處理  Android 改寫返回鍵事件監聽,使得back鍵功能類似home鍵,讓Acitivty退至後臺時不被系統銷燬 現在很多程式要求back鍵不是退出程式而是像home鍵一樣讓Acitivty退至後臺時不被系統銷燬,查到的資料大多說都是繼承activity的沒有繼承Tab

ANDROID 返回選單和HOME

------網上找了很多資料,專案中使用,最後將經驗總結如下: 1,返回和選單鍵是可以直接重寫onKeyDown(int keyCode, KeyEvent event) 方法監聽: @Overridepublic boolean onKeyDown(int keyC

android 在fragment中如何返回home

在activity中用keydown很容易實現對返回鍵的監聽,但是這個函式不能再fragment中過載。  通過我嘔心瀝血的尋找,終於找到了解決辦法,對其他物理按鍵的監聽也同理。  Java程式碼   public class phonerecorder exten

JS使用 popstate 事件物理返回

function 事件監聽 bsp als ref listen hist inf UNC pushHistory(); window.addEventListener("popstate", function (e) { i

自定義webView實現帶title和返回的webView,webView的滑動事件

安卓webView介紹 WebView是基於webkit引擎展現web頁面的控制元件,它功能強大,除了具有一般View的屬性和設定外,還可以對url請求、頁面載入、渲染、頁面互動進行強大的處理。 We

android設定軟鍵盤搜尋以及搜尋點選發生兩次事件的問題解決

在輸入框中加入android:imeOptions="actionSearch",呼叫軟鍵盤時,回車鍵就會顯示搜尋二字。 我想在點選搜尋時,跳轉到下一個頁面,但是呼叫setOnKeyListener,每次都執行兩次。最後上網看到別人的文章,解決了問題,解決方法是呼叫se

Unity3D與Android專案互動中無法back返回的解決辦法

 這兩天為解決unity3d與android專案整合中出現的無法監聽真機back實體鍵的問題找了很多資料,網上也有很多人遇到了這個問題,但是似乎都沒找到有效的解決方法。    實現的效果是從A_Activity跳轉到UnityPlayerNativeActi

cocos creator(十三)android平臺返回實現

1、cocos creator打包成的apk如何實現返回鍵的監聽 我嘗試過這位大大的方法 在常駐節點上掛載的js中加入這段程式碼就可以。 if(cc.sys.os == cc.sys.OS_ANDR

[轉]addEventListener() 方法事件

傳遞參數 調用 參數 spa 默認 mouse 可選 als http 轉載 白楊-M http://www.cnblogs.com/baiyangyuanzi/p/6627401.html addEventListener() 方法,事件監聽 你可以使用 r

android開發 事件

第一種:匿名內部類作為事件監聽器類  大部分時候,事件處理器都沒有什麼利用價值(可利用程式碼通常都被抽象成了業務邏輯方法),因此大部分事件監聽器只是臨時使用一次,所以使用匿名內部類形式的事件監聽器更合適,實際上,這種形式是目前是最廣泛的事件監聽器形式。上面的程式程式碼就是匿名內部類來建

js拼接的程式碼點選事件無響應只需用這個事件就通解決

通過js拼接的動態程式碼做類事件響應的時候,點選事件響應。 只需用這個事件監聽就通解決: $('body').on('click', '.but', function() { }) 拼接的程式碼如下:   $page_str='<div dat

ionic v4 關於返回 (hardware back button)

android手機上的返回鍵,會自動的使路由後退。但少數時候我們可能不需要這個後退功能,希望自己監聽點選回退操作。 比如,想通過點選返回按鈕關閉一個modal,並且不想後退。 1.使用@HostListener 監聽ionBackButton事件 @HostListener('docume

Android開發20——單個監聽器多個按鈕點選事件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

事件回撥事件

一、事件監聽涉及到三個類物件 1、EventSource(事件源)事件發生的場所 2、Event(事件):事件封裝介面元件上面發生的特定事件 3、EventListener(事件監聽器):負責監聽事件源發生的事件     二、監聽器就是程式中的MyC

JS事件繫結事件事件委託

        在JavaScript的學習中,我們經常會遇到JavaScript的事件機制,例如,事件繫結、事件監聽、事件委託(事件代理)等。這些名詞是什麼意思呢,有什麼作用呢? 事件繫結 要想讓 JavaScript 對使用者的操作

通過點選事件 setOnClickListener 徹底理解回撥-Android

前言 老司機們對於回撥肯定熟悉得不能再熟悉了,但是新司機可能還是一臉懵逼的,我比較笨,當年懵逼了好久,看夏安明的這一篇部落格地址,雖然下邊的留言都是,寫得好!懂了懂了!但是我當時看了三遍還是不懂好嗎 - -,現在我站在我的角度,用我理解的方式給大家講解回撥,我這麼笨都理解了,聰明的新司機們肯定也