第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何檢測(cè)用戶在我的活動(dòng)中按HOME鍵?

如何檢測(cè)用戶在我的活動(dòng)中按HOME鍵?

紫衣仙女 2019-08-27 17:05:21
如何檢測(cè)用戶在我的活動(dòng)中按HOME鍵?你能告訴我我的活動(dòng)如何檢測(cè)用戶HOME按鍵?
查看完整描述

3 回答

?
開(kāi)心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

根據(jù)JM Lord的評(píng)論,這個(gè)答案可能無(wú)法滿足Lollipop及以上設(shè)備的要求。請(qǐng)參閱Android L中的getRunningTasks替代方案


雖然,這是一個(gè)老問(wèn)題,但大多數(shù)答案在API級(jí)別17及以上版本中對(duì)我不起作用。我正在回答最終為我工作的事情。我嘗試了很多方法,但沒(méi)有一個(gè)像今天一樣工作。我試過(guò)答案

在Android上按下主頁(yè)按鈕時(shí)的調(diào)用方法,

在android和中檢測(cè)主頁(yè)按鈕按下

覆蓋主頁(yè)按鈕 - 如何擺脫選擇?。要點(diǎn)是Home就像一個(gè)緊急逃生按鈕。所以你不能覆蓋它,但可以在某些方面檢測(cè)它。

我試過(guò)的一些(包括上面的答案)但沒(méi)有用的是:

  1. keyCode==KeyEvent.KEYCODE_HOME如上所述以多種方式使用?,F(xiàn)在,如果您閱讀了KeyEvent.KEYCODE_HOME的文檔 ,那就說(shuō)明了這一點(diǎn)This key is handled by the framework and is never delivered to applications。所以它現(xiàn)在不再有效了。

  2. 我試過(guò)用onUserLeaveHint()。文件說(shuō):

    當(dāng)活動(dòng)即將作為用戶選擇的結(jié)果進(jìn)入后臺(tái)時(shí),被稱為活動(dòng)生命周期的一部分。例如,當(dāng)用戶按下Home鍵時(shí),將調(diào)用onUserLeaveHint(),但是當(dāng)傳入的電話呼叫導(dǎo)致呼入時(shí)Activity自動(dòng)被帶到前臺(tái)。

    問(wèn)題在于,當(dāng)你Activity 從你正在調(diào)用的活動(dòng)中啟動(dòng)一個(gè)方法時(shí),也會(huì)調(diào)用該方法onUserleaveLint(),就像我的情況一樣。有關(guān)更多信息,請(qǐng)參閱Android onBackPressed / onUserLeaveHint問(wèn)題。所以它不確定它只能通過(guò)按下主頁(yè)按鈕來(lái)調(diào)用。

  3. 打電話onStop()。當(dāng)活動(dòng)出現(xiàn)在現(xiàn)有活動(dòng)之上并完全覆蓋它時(shí),也可以調(diào)用它。所以這也行不通。

最后,以下內(nèi)容對(duì)我有用:

眼看如何檢查當(dāng)前正在運(yùn)行的應(yīng)用程序在Android中?你可以說(shuō),如果你的是最近的任務(wù),長(zhǎng)按主頁(yè)按鈕顯示,然后它被發(fā)送到后臺(tái)。

因此,在您onPause()嘗試檢測(cè)按下主頁(yè)按鈕的活動(dòng)中,您可以檢查應(yīng)用程序是否已發(fā)送到后臺(tái)。

@Overridepublic void onPause() {
    if (isApplicationSentToBackground(this)){
        // Do what you want to do on detecting Home Key being Pressed 
    }
    super.onPause();}

用于檢查您的應(yīng)用是否是最近發(fā)送到后臺(tái)的應(yīng)用的功能:

public boolean isApplicationSentToBackground(final Context context) {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
            return true;
        }
    }
    return false;}

感謝@idish指出不要忘記在清單中包含以下權(quán)限:

<uses-permission android:name="android.permission.GET_TASKS" />

我不確定這是否有任何缺點(diǎn),但它對(duì)我有用。希望有一天能幫助某人。

PS:如果你在使用FLAG_ACTIVITY_NO_HISTORYflag 啟動(dòng)的Activity中使用此方法,那么這將無(wú)用,因?yàn)樗鼤?huì)檢查最近的歷史記錄以確定是否Home單擊了按鈕。


查看完整回答
反對(duì) 回復(fù) 2019-08-27
?
翻翻過(guò)去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

您可以通過(guò)Activity.onUserLeaveHint()檢測(cè)HOME按鈕按下。在兩種情況下調(diào)用此方法; 當(dāng)用戶按下HOME時(shí)以及啟動(dòng)新活動(dòng)時(shí)。確保以某種方式區(qū)分兩者。


查看完整回答
反對(duì) 回復(fù) 2019-08-27
  • 3 回答
  • 0 關(guān)注
  • 357 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)