點擊home五秒內無法再次進入問題

在解決app點擊home之後無法在通過廣播/懸浮框等再次進入的問題之前我們先了解一下幾種APP安裝的路徑

1.系統APP安裝路徑主要分爲

    a./system/app/priv-app

    b./system/app

2.普通APP安裝路徑一般爲:/data/app

我們可以很明確的看到系統APP安裝路徑存在兩個,那麼這兩個路徑又怎樣的區別呢

1./system/priv-app目錄是Google在Android4.4之後提出的,目的在於將系統級APP也分成幾個等級,在該目錄下的APP可以申請的權限要比在/system/app目錄下的app申請的權限要多,在該目錄下主要安裝的是一些系統核心組件和一些服務等具有較高特權的APP

2./system/app目錄主要存放的是一些相對不是那麼重要的app,當然這也只是相抵而言.

至此我們所需要了解的一些基礎東西就簡單的介紹完畢了,下面進入我們的正題

系統中其實已經有通過home鍵退出後5S內點擊懸浮框或者其他方式重新進入的應用,例如最常見的電話,當電話接通後我們點擊home一般通過狀態欄我們是可以立即再次進入的,通過分析Android源碼,ActivityManagerService的stopAppSwitches()方法對"android.permission.STOP_APP_SWITCHES"權限做檢測,如果沒有該權限則

mHandler.sendMessageDelayed(msg, APP_SWITCH_DELAY_TIME);//static final long APP_SWITCH_DELAY_TIME = 5*1000;

如果存在該權限則立即啓動,至此我們找到根本的原因,即缺少"android.permission.STOP_APP_SWITCHES"權限

那麼問題就很好解決了,我們在Androidmanifest.xml中申請該權限不就可以了麼,其實不然,Android的權限管理是非常嚴格的,其將權限以android:permissionGroup分成幾個組用android:protectionLevel分成幾個等級,而android.permission.STOP_APP_SWITCHES權限恰好是/system/priv-app所能申請到的權限(該權限/system/app無法申請到),所以確實有需要的時候我們可以將自己的應用安裝在/system/priv-app目錄下,並申請android.permission.STOP_APP_SWITCHES權限來解決按下home鍵後5S內無法通過intent或者點擊懸浮按鈕的再次進入的問題.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章