微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 呼出SIM卡设置总是询问时,在锁屏界面点回拨电话无效

呼出SIM卡设置总是询问时,在锁屏界面点回拨电话无效

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
1:双卡,模式选择总是询问,设置锁屏
2:来电未接,按下power键熄屏,在按power键亮屏
3:在不解锁的前提下,下拉missed call,点击回拨
[SOLUTION]
该问题是google default的issue.
问题发生的原因是:
来电未接后,按下power key灭屏或者手机自动灭屏后,AMS会进入sleep状态,在这个状态下点击
CallBack,从Keyguard启动InCallActivity,会引发一次inCallActivity的onPause,因为当时选择
的是always ask的模式,所以在keyguard 启动InCallActivity时,会要触发去启动选卡界面,又由
于InCallActivity要pause,所以导致选卡界面遇到pauseInCallActivity,就会被dismiss,就触发退
出选卡界面,所以就断掉了这通要callBack的call.
即最终的原因是:选卡界面在show之前就已经要退出了,因此callBack的动作也就失败了。
尝试了很多workround的方法,但都不能从根本上解决问题。
Workaround的方法如下:
APP在pause时,不去finish动作.
但是发现当第一次点击CallBack时,App判断有Keyguard在,就不在pause时finish,此时App在
Keyguard之上。如果这之后再有pause发生,由于Keyguard仍然存在,App就无法判断pause是由
Keyguard引起的,还是用户主动trigger的了,从而无法知道当前应该finish还是不能finish。show
出这个界面后,用户再主动关屏或者Cancel Dialog时,就会出问题。所以,不能解决问题。
点击callBack,在dismiss Keyguard后,即解锁后,再来启动
但是发现google default的设计中,CLIck callBack action,所带的pending Intent属性为
broADCast,所以是不会走到dismissKeyguardThenExecute的,所以是没办法达到dismiss keyguard,
即解锁后,在启动InCallActivity的。有设想将pendingIntent的属性改为activity,而不用
broadcast,但是这样的改的话,当key guard设定成pattern lock/pin lock,使用者就需要先手动
解锁才能回拨,(key guard沒dismiss前pending intent不会送出,也就不会有回拨),这样就修改
了google default的不用解锁就可以回拨电话的行为,且目前在解锁keyguard后,下拉statusBar的
callBack, 本来也就可以进行回拨电话,所以,
这样修改的意义也不大,且会修改了google default的行为,后续可能会报更多不可预知的问题
,所以,觉得这个也不可行。
从Notification回拨Missed call时,直接使用收到来电的卡,跳过选卡的步骤。
不过这样也会有限制:如果收到来电的卡在回拨前被拔掉,再换插入另一张卡,则这个“没反应
”的问题还是会出现,所以,这样修改的必要性也不大。
所以,目前暂时并没有好的workround方法,且修改后,还会触发很多显而易见的问题。且从用户的
角度来说,如果设置过Default Call Account就不会有此问题或者先解锁再回拨也不会有此问题
,只有用户将Call Account设置成Ask First,才会出现这个问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top