后面的项目可能不会遇到这个问题了。因为这个bug应该会被订正了。
先说问题现象吧。插电信卡概率性出现呼叫转移失败。插拔卡比较容易出现。
此界面为插电信卡,关闭enhanced4g的前提下测试。 Volte卡和非Volte卡都会概率出现。
此种情况呼叫转移设置路径:拨号盘-》设置-》calling accounts-》点击电信卡-》CDMA call settings-》call forwarding->Always forward->Activate.
正常界面:比如转移到120,则会拨出*72120.
而有问题的界面如下;终端直接拨120出去了。
问题在哪里呢?仔细看下面成功和失败的菜单比较图:
实际上在没有Activate界面前,在Always forward 界面,成功和失败的界面就存在差异了。失败的没有红框中的*72字符串。
对比成功失败的log也可以发现,成功的可以获取deact num,失败的获取不了。:
成功的log:
10-16 16:41:21.670 D CdmaCallForwardOptions: Inside CF options, Getting subscription = 2147483647
10-16 16:41:21.681 D CdmaCallForwardOptions: subid:2147483647 call option on type: 0 Getting deact num =*720
失败的log:
10-16 16:41:59.646 D CdmaCallForwardOptions: Inside CF options, Getting subscription = 2147483647
10-16 16:41:59.656 D CdmaCallForwardOptions: subid:2147483647 call option on type: 0 Getting deact num =
奇怪的是subid 都是2147483647-太大了吧? 根据此subid获取的sub info是null。一个能获取deact num。一个不能获取deact num。成功失败的subid都是一样的,可能是subid的问题么?
还是看看subid从什么获取的吧。如下图,是从intent中获取SUBSCRIPTION_KEY的extra。
拉起call forward设置界面的代码如下图红框:
果真,竟然,真的没有传SUBSCRIPTION_KEY!
修改是比较容易的: