需求背景
具体场景:App在后台,接到推送消息后需要启动一个Activity来显示相关信息。
先说系统层面,在Android 10 (API 级别 29) 及更高版本对后台应用可启动 Activity进行了限制。Android10中, 当App的Activity不在前台时,其启动Activity会被系统拦截,导致无法启动。
实际测试当中,各个手机表现不同。
Android 10 版本:
三星手机:需要添加
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
华为手机(P20,EMUI10)
同样也是要申请权限,如下图
低于Android 10 版本
小米系列手机:
在获取上面的权限的同时,
小米手机有个特殊的权限,“后台弹出界面(允许应用在后台弹出界面)”,默认是拒绝的,如下图所示
这个权限没有相关的API可以引导用户去设置这个权限,只能靠用户自己去打开,再就是联系小米为自家App打开这个权限
总结
从后台启动Activity,暂时没发现一个通用性好的办法