问题描述:公司的app里面需要用小米push推送一条消息,并且点击实现落地页。但是,自己测的时候没问题(使用的是MIUI 9),用别人的手机就不能实现落地。同时,打断点也不能发现不能进入到小米提供的响应接口(后来发现,应该是我打包之后代码混淆了,所以进不来。。。)
解决方法:启动的intent加上一个flag(FLAG_ACTIVITY_NEW_TASK)
原因:当一个notification启动一个activity时传入的Context并不是原先一个正常的ActivityContext。因为在Activity Stack 中的每一个activity 之间相互启动,它们都存在于一个共同的stack中。而小米的推送,实际存在于一个PushService里,在service中传入的Context并不在一个Activity Stack 中,所以,使用这个context.stactActivity的时候就会出现问题,导致不能启动Activity。
解释的可能不是很清楚,因为我也是听别人讲解的,没有查到相关的资料。所以先记下结论,以后遇到再更新。