微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 通话过程中,点击添加电话按钮,不拨出直接按两次返回键界面跳转错误

通话过程中,点击添加电话按钮,不拨出直接按两次返回键界面跳转错误

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
1、先打开短信--按back退到桌面(此步骤可以换成点击任意拨号外的应用,按home回到桌面);2、点击拨号--拨号一
通电话--通话中点击添加通话--进入拨号界面---按back隐藏拨号盘--再按back返回到通话界面----通话界面挂断电话-
--进入短信界面(预期应该进入桌面)
[root Cause]
该问题的出现是因为 KK 上的双 Stack 机制引起的。在 kk 上分为 App Stack(如Dialer/InCallUI/MMS) 和 System Stack(如 Launcher),如果 App 从 Launcher 启动,则会给相应的 Activity 做标记。
该问题的现象是:首先进入 Mms,该 Mms Activity 会被标记为从 Launcher 启动,然后按 home 键再进入Dialer,此时DialactsActivity 也会被标记,播出电话后又添加一通电话,此时由于 DialactsActivity 的LaunchMode 是 SingleTask, 并且
InCallActivity 的 LaunchMode 是 SingleInstance, 所以 DialactsActivity 所属的Task 会被搬到前台,并且 DialactsActivity 的标记会被清除,这样当电话挂断后就会返回到 Mms
[SOLUTION]
Solution 1: 在添加通话时启动 DialactsActivity 添加 flag (
Intent.FLAG_ACTIVITY_TASK_ON_HOME),这样按两次 back 键不会回到
InCallActivity,而是回到 Launcher
Solution 2: 将 InCallActivity 添加 flag(Intent.FLAG_ACTIVITY_TASK_ON_HOME)
,这样每次挂断电话后,都会从 InCallActivity 直接回到 Launcher(目前在拨打电
话挂断电话后会回到 DialactsActivity)
修改方法如下
Solution 1: 在添加通话时启动 DialactsActivity 添加 flag (Intent.FLAG_ACTIVITY_TASK_ON_HOME),这样按两 次 back 键 不 会 回 到
InCallActivity , 而 是 回 到 Launcher


Telephony/src/com/android/phone/PhoneUtils.java
Solution 2: 将 InCallActivity 添加 flag(Intent.FLAG_ACTIVITY_TASK_ON_HOME),这样每次挂
断电话后,都会从 InCallActivity 直接回到 Launcher(目前在拨打电话挂断电话后会回到 DialactsActivity)
InCallUI/src/com/android/incallui/InCallPresenter.java

学习学习

mark~

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

网站地图

Top