背景
??项目以前基于android7.0以下运行,静态监听系统的开机广播,然后拉起自己的activity。但是在Android 10 之后,发现方法失效了。
经过查阅资料发现:Android 10 (API 级别 29) 及更高版本对后台应用的启动做了限制。Android10中, 当App的Activity不在前台时,其启动Activity会被系统拦截,导致无法启动。
详见:google:从后台启动 Activity 的限制
这里摘一些概要:
Android 10 (API 级别 29) 及更高版本对后台应用可启动 Activity 的时间施加限制。这些限制有助于最大限度地减少对用户造成的中断,并且可以让用户更好地控制其屏幕上显示的内容。 注意:为启动 Activity,系统仍会将运行前台服务的应用视为“后台”应用。
方案一
要解决这个问题有两个方案: 其一是使用NotificationManager + 全屏Intent,并添加权限:
//AndroidManifest中
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
Intent fullScreenIntent = new Intent(this, CallActivity.class);
PendingIntent fullScr
|