隨著Android版本的不斷升級,對于應用權限的管理會更加苛刻。我司IAC-RK3568-Kit開發板默認搭載Android11,相比較之前RK3288的產品安卓版本變更較大,有些客戶反饋之前Android7.1自啟動應用的方法在高版本安卓上無法生效,今天就對此展開討論。

在早期版本中,大多數自啟動應用的做法都是通過廣播接收器接收開機廣播,然后直接啟動自己的應用,但是在高版本安卓中廣播接收器的權限被嚴格限制,所以在logcat中你可以發現自己的應用并沒有正常起來,并可能伴隨著ANR的發生或程序因為某種超時被殺死的情況。
在高版本安卓中,服務的概念貫穿上層到底層,服務的便攜性以及承上啟下的作用使得它沒有很多限制,可以在滿足權限要求嚴格的廣播接收器中正常啟動,然后在服務中再自啟動。所以具體根據需求我們需要重寫相關方法,建立自己的服務,在服務中啟動我們自己的UI,如下圖所示:

服務的建立與啟動邏輯完成之后,只需要在廣播接收器中拉起建立服務即可,如下圖所示:

當然,這些任務做完之后,AndroidManifest.xml里的權限也需要得到補充

正常啟動之后可以發現應用已經常駐后臺,通過狀態欄可以看到應用在持續的運行中,那為什么沒有顯示到桌面launch前面呢?這主要是因為桌面launch是系統級應用,級別高于我們自己的應用,所以不允許顯示在系統級應用之前。
針對這個問題,可以有兩種解決思路,一是通過系統簽名,將自己的應用打上系統簽名,這樣就可以顯示在系統launch之前,二是通過修改安卓底層源碼,framwork層,更改應用篩選條件,不再通過簽名的方式辨別系統級應用還是我們自己的應用,這樣也可以做到相同的效果。
-
Android
+關注
關注
12文章
4033瀏覽量
134219 -
開發板
+關注
關注
26文章
6329瀏覽量
119160 -
RK3568
+關注
關注
5文章
649瀏覽量
8013
發布評論請先 登錄
迅為iTOP-RK3568開發板Android11移植之源碼結構簡介
【北京迅為】itop-rk3568開發板官方Android11移植教程
【超前發布】瑞芯微RK3568視頻教程
迅為干貨 |瑞芯微RK3568開發板Android11系統開發筆記
【重磅來襲】迅為RK3568 Android11系統移植視頻教程
迅為RK3568開發Android12系統燒寫 Android 固件
迅為RK3568開發板Android11系統開發筆記分享
iTOP-RK3568開發板Android11設置語言和默認時區
迅為iTOP-RK3568開發板Android11移植之源碼結構簡介
瑞芯微RK3566/RK3568 Android11下該如何默認屏蔽導航欄/狀態欄?看這篇文章就懂了
Android11修改攝像頭前后置方法,觸覺智能RK3568開發板演示
RK3568 Android11編譯環境搭建及報錯解決指南
技術分享 | RK3568 Android11 如何實現自啟動應用
評論