系统厂商拦截应用自启
现象:在实际开发过程中发现,forceStop某些应用,应用还是会按照自己的保活机制重新拉起来
分析:
可以选择在framework中打印堆栈查看应用是如何拉起来的,在Process.start时打印堆栈
根据log大致分为三种情况应用会拉起自身
1.通过广播拉起,某些应用通过系统服务内部发送广播
2.通过bindService拉起
3.通过startInstrumentation拉起
措施:然后可以根据具体情况在AMS做拦截操作了
1.针对广播的拦截
根据堆栈打印情况会调用到AMS的broadcastIntentWithFeature中,由于服务自身发送广播pid会为0,可根据情况进行拦截
2.bindService拉起可以根据拉起的callingPackage判断是否是系统进程拉起的,做相应处理
3.startInstrumentation拉起会调用到AMS的startInstrumentation方法,直接进行拦截即可
这样既不会影响到应用本身的正常启动,又能对三方应用通过系统拉起自身进行规避

浙公网安备 33010602011771号