谷歌 Pilex 手機阻止用戶撥打 911 報警電話
11月末,Reddit 用戶 KitchenPicture 5849 發(fā)帖稱:搭載 Android 11 的 Pixel 手機阻止他撥打 911,當時他的祖母中風需要呼叫救護車,但打了 911 報警電話后“手機一響就卡住了,除了點擊后臺運行的緊急電話的應(yīng)用程序之外,什么也做不了。”
此現(xiàn)象還可以復(fù)現(xiàn),帖子熱度膨脹后,Reddit 用戶重現(xiàn)了該問題,他們并表示在發(fā)起呼叫后五分鐘,緊急服務(wù)部門沒有任何回應(yīng),也沒有證據(jù)表明手機呼叫了 911 ——設(shè)備上的電話記錄和運營商(Verizon ) 電話記錄都顯示為空。
12 月 8 日,谷歌正面回應(yīng)了此問題,表示“該問題由 Microsoft Teams 應(yīng)用程序和底層 Android 操作系統(tǒng)之間的意外交互引起,我們將很快修復(fù)此問題,將在 1 月 4 日向 Android 生態(tài)系統(tǒng)提供 Android 平臺更新”。
讓人不安和困惑的是,像 Microsoft Teams 這樣的第三方應(yīng)用程序,竟然能夠干擾像緊急撥號如此重要的服務(wù)。幾乎所有國家的法律都要求運營商將緊急呼叫路由到附近的緊急服務(wù)站點,這樣即使移動設(shè)備沒有裝 SIM 卡,也能撥打緊急求助電話。
也就是說:任何情況下都不應(yīng)該阻止手機緊急撥號。
問題來源:PhoneAccounts
隨后,外媒 medium 的 Mishaal Rahma 對谷歌所說的“Microsoft Teams 和 底層 Android 的意外交互”進行了詳細的研究,發(fā)現(xiàn)事情出在 Android 底層的 PhoneAccounts 實例上,具有通話功能的 Android 應(yīng)用程序都會構(gòu)建 PhoneAccount 實例,比如 Microsoft Teams 應(yīng)用,它使用 Skype 后端進行語音通話,但它無法處理緊急呼叫,因此才會出現(xiàn)文章開頭那種無法撥打 911 的問題。
但如果單純按照這個邏輯,那么所有裝了 Microsoft Teams 的 Android 手機都不能撥打 911 了,但事實并非如此,通常 Android 系統(tǒng)會通過“是否支持緊急呼叫”等標簽對 PhoneAccounts 列表進行排序,選出優(yōu)先級最高的 PhoneAccounts 實例并執(zhí)行。
接下來問題的謎底就揭曉了,Microsoft Teams 應(yīng)用出現(xiàn) PhoneAccount 實例過度注冊的錯誤。每當手機安裝了 Microsoft Teams 應(yīng)用程序但尚未登錄時,該應(yīng)用程序的每次冷啟動都會創(chuàng)建另一個 PhoneAccount 實例。過多的 PhoneAccount 實例進行排序,導(dǎo)致 Android 的 sortSimPhoneAccountsforEmergency 緊急呼叫優(yōu)先級排序方法出現(xiàn)整數(shù)上溢/下溢錯誤,從而選擇了錯誤的應(yīng)用來進行緊急呼叫。
后續(xù)
12月 10日,微軟推出 Teams 應(yīng)用程序的 1416/1.0.0.2021194504 版。此版本解決了生成過多重復(fù) PhoneAccounts 的問題,還會在首次啟動時調(diào)用 TelecomManager 的 clearPhoneAccounts 方法,來清除之前創(chuàng)建的所有PhoneAccounts。
熱心網(wǎng)友 @linuxct 開發(fā)了一個簡單的開源應(yīng)用程序,該程序可以列出設(shè)備中所有的 PhoneAccounts ,并評估是否有應(yīng)用程序存在過度注冊 PhoneAccounts 的問題 ,目前可在 GitHub 下載。
本文轉(zhuǎn)自O(shè)SCHINA
本文標題:谷歌 Pilex 手機阻止用戶撥打 911 報警電話
本文地址:https://www.oschina.net/news/173606/pixel-prevented-user-from-calling-911


2020-09-24 14:16:39




