fcmfix icon indicating copy to clipboard operation
fcmfix copied to clipboard

Google Play服务更新导致App强制退出,无障碍服务无法重启

Open liyafe1997 opened this issue 2 years ago • 4 comments

这个应该不是fcmfix的问题,但是也许fcmfix可以给这个问题做一些workaround.

Google Play Service会在后台自动更新(尤其充电时),更新后,会导致一大票引用了Google API的App处于强制停止状态(比如AccuBattery)。

原生安卓下似乎会自动重启这些App,但是在MIUI下并不会。

一般App还好说,涉及无障碍服务的,这个无障碍似乎没有一个重启的办法,只有重启整个系统才可以恢复使用。

目前不太清楚这是个什么机制,网上也查不到相关信息但还是零星有人反应有类似问题。在原生安卓上测试,更新Google Play服务后确实这些App是会自动重启的,一切恢复如初。有同样问题的朋友欢迎一起讨论。

IMG_20221214_192554

liyafe1997 avatar Dec 14 '22 18:12 liyafe1997

在miui有给自启动的权限吗? 按道理有自启动权限的app被强制停止之后它会自己想办法启动的,原生安卓没有这个权限限制所以就能自动重启。

我在用的安卓11miui eu看起来没这个问题,用到无障碍服务的应用在强制停止之后无障碍服务也会自己恢复。

kooritea avatar Dec 14 '22 18:12 kooritea

在miui有给自启动的权限吗? 按道理有自启动权限的app被强制停止之后它会自己想办法启动的,原生安卓没有这个权限限制所以就能自动重启。

我在用的安卓11miui eu看起来没这个问题,用到无障碍服务的应用在强制停止之后无障碍服务也会自己恢复。

有允许 ,同时加入fcmfix列表里,后台无限制,都没有用。

liyafe1997 avatar Dec 14 '22 20:12 liyafe1997

在miui有给自启动的权限吗? 按道理有自启动权限的app被强制停止之后它会自己想办法启动的,原生安卓没有这个权限限制所以就能自动重启。

我在用的安卓11miui eu看起来没这个问题,用到无障碍服务的应用在强制停止之后无障碍服务也会自己恢复。

不是每个App都会出现,最好复现的例子就是AccuBattery,更新Google Play Service之后如果通知栏的图标消失并且不会重新出现就说明有这个问题。

liyafe1997 avatar Dec 14 '22 22:12 liyafe1997

摸索出了个workaround。 既然它不会自动重启,那就手动重启好了。 重启AccessibilityService的方法: 先用 settings get secure enabled_accessibility_services 得到所有启用的服务

然后通过替换字符串把会受Play Service影响的服务去掉

然后 settings set secure enabled_accessibility_services 刚刚得到的字符串

然后一定要延迟几百ms,再重新set一遍包含受影响的服务的list。

这样就能重启这些AccessibilityServices了

对于一般的App,可以直接用 am broadcast -a android.intent.action.BOOT_COMPLETED -p package.name

来把它重新拉起来

写成一个Tasker,Event为Package Updated(检测到com.google.android.gms这个包更新时触发),完美: Screenshot_2022-12-15-14-29-38-874_net.dinglisch.android.taskerm.jpg

liyafe1997 avatar Dec 15 '22 14:12 liyafe1997