fcmfix
fcmfix copied to clipboard
Google Play服务更新导致App强制退出,无障碍服务无法重启
这个应该不是fcmfix的问题,但是也许fcmfix可以给这个问题做一些workaround.
Google Play Service会在后台自动更新(尤其充电时),更新后,会导致一大票引用了Google API的App处于强制停止状态(比如AccuBattery)。
原生安卓下似乎会自动重启这些App,但是在MIUI下并不会。
一般App还好说,涉及无障碍服务的,这个无障碍似乎没有一个重启的办法,只有重启整个系统才可以恢复使用。
目前不太清楚这是个什么机制,网上也查不到相关信息但还是零星有人反应有类似问题。在原生安卓上测试,更新Google Play服务后确实这些App是会自动重启的,一切恢复如初。有同样问题的朋友欢迎一起讨论。
在miui有给自启动的权限吗? 按道理有自启动权限的app被强制停止之后它会自己想办法启动的,原生安卓没有这个权限限制所以就能自动重启。
我在用的安卓11miui eu看起来没这个问题,用到无障碍服务的应用在强制停止之后无障碍服务也会自己恢复。
在miui有给自启动的权限吗? 按道理有自启动权限的app被强制停止之后它会自己想办法启动的,原生安卓没有这个权限限制所以就能自动重启。
我在用的安卓11miui eu看起来没这个问题,用到无障碍服务的应用在强制停止之后无障碍服务也会自己恢复。
有允许 ,同时加入fcmfix列表里,后台无限制,都没有用。
在miui有给自启动的权限吗? 按道理有自启动权限的app被强制停止之后它会自己想办法启动的,原生安卓没有这个权限限制所以就能自动重启。
我在用的安卓11miui eu看起来没这个问题,用到无障碍服务的应用在强制停止之后无障碍服务也会自己恢复。
不是每个App都会出现,最好复现的例子就是AccuBattery,更新Google Play Service之后如果通知栏的图标消失并且不会重新出现就说明有这个问题。
摸索出了个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这个包更新时触发),完美: