随着Android版本的不断升级,对于应用权限的管理会更加苛刻。我司IAC-RK3568-Kit开发板默认搭载Android11,相比较之前RK3288的产品安卓版本变更较大,有些客户反馈之前Android7.1自启动应用的方法在高版本安卓上无法生效,今天就对此展开讨论。

在早期版本中,大多数自启动应用的做法都是通过广播接收器接收开机广播,然后直接启动自己的应用,但是在高版本安卓中广播接收器的权限被严格限制,所以在logcat中你可以发现自己的应用并没有正常起来,并可能伴随着ANR的发生或程序因为某种超时被杀死的情况。
在高版本安卓中,服务的概念贯穿上层到底层,服务的便携性以及承上启下的作用使得它没有很多限制,可以在满足权限要求严格的广播接收器中正常启动,然后在服务中再自启动。所以具体根据需求我们需要重写相关方法,建立自己的服务,在服务中启动我们自己的UI,如下图所示:

服务的建立与启动逻辑完成之后,只需要在广播接收器中拉起建立服务即可,如下图所示:

当然,这些任务做完之后,AndroidManifest.xml里的权限也需要得到补充

正常启动之后可以发现应用已经常驻后台,通过状态栏可以看到应用在持续的运行中,那为什么没有显示到桌面launch前面呢?这主要是因为桌面launch是系统级应用,级别高于我们自己的应用,所以不允许显示在系统级应用之前。
针对这个问题,可以有两种解决思路,一是通过系统签名,将自己的应用打上系统签名,这样就可以显示在系统launch之前,二是通过修改安卓底层源码,framwork层,更改应用筛选条件,不再通过签名的方式辨别系统级应用还是我们自己的应用,这样也可以做到相同的效果。
-
Android
+关注
关注
12文章
4041浏览量
134740 -
开发板
+关注
关注
26文章
6487浏览量
121327 -
RK3568
+关注
关注
5文章
657浏览量
8183
发布评论请先 登录
迅为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 如何实现自启动应用
评论