1. 程式人生 > >原生撥號盤設定電信卡來電轉駁概率失敗

原生撥號盤設定電信卡來電轉駁概率失敗

後面的專案可能不會遇到這個問題了。因為這個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!

修改是比較容易的: