舊API將被棄用:谷歌敦促開(kāi)發(fā)者遷移至Android Q的氣泡彈窗
在 I/O 2019 開(kāi)發(fā)者大會(huì)上,谷歌宣布了許多應(yīng)用、服務(wù)和開(kāi)發(fā)者工具更新,但 Android OS 依然是各界關(guān)注的焦點(diǎn)。目前 Android 已在全球超過(guò) 25 億臺(tái)設(shè)備上運(yùn)行,并且占據(jù)了 I/O 會(huì)議的大部分時(shí)間。今年的大會(huì)上,谷歌依然為 Android Q 帶來(lái)了許多變化。比如在首日的《What's New in Android》會(huì)議上,谷歌就宣布了一項(xiàng)重大的 API 更改。
(題圖 via XDA-Developers)
據(jù)悉,SYSTEM_ALERT_WINDOW 是一個(gè)允許開(kāi)發(fā)者在屏幕頂上繪制疊加層的全局彈窗 API,比如大家最熟悉的聊天氣泡(參考 Facebook Messenger)。
不過(guò)現(xiàn)在,Google 已決定在 Android Q 中,用 Bubbles API 來(lái)替代 SYSTEM_ALERT_WINDOW 。而且在未來(lái)的 Android 版本中,谷歌還將徹底棄用舊 API 。
需要指出的是,盡管 SYSTEM_ALERT_WINDOW 可以方便開(kāi)發(fā)者在其它 App 窗口上疊加氣泡窗口,但它也會(huì)帶來(lái)明顯的安全隱患,比如臭名昭著的“Cloak and Dagger”漏洞利用。
作為應(yīng)對(duì),谷歌開(kāi)始對(duì) Android Oreo 中回退區(qū)域的層疊加以限制,且在 Android Q(Go)版本中完全移除了對(duì)該 API 的訪問(wèn)。
對(duì)于用戶來(lái)說(shuō),應(yīng)該盡量通過(guò)手動(dòng)管理,對(duì)應(yīng)用授予特殊的屏幕操作權(quán)限(Google Play 商店應(yīng)用會(huì)在安裝時(shí)自動(dòng)授權(quán))。
慶幸的是,在 Android Q 中,應(yīng)用只擁有對(duì) SYSTEM_ALERT_WINDOW 的臨時(shí)訪問(wèn)權(quán)限。
通過(guò)側(cè)載(Sideload)方式安裝的應(yīng)用,只能獲得 30 秒的訪問(wèn)權(quán)限。而通過(guò) Play 商店安裝的應(yīng)用,則能夠在重啟前保持這項(xiàng)訪問(wèn)權(quán)限。
在未來(lái)的 Android 版本中,SYSTEM_ALERT_WINDOW 將被完全棄用。所有使用該 API 的 Android 應(yīng)用,都必須轉(zhuǎn)至 Android Q beta 2 中引入的全新氣泡 API 。
不過(guò),氣泡(Bubbles)屬于通知(Notification)API 的一部分,因此無(wú)法作為 SYSTEM_ALERT_WINDOW 的完全替代品。
雖然氣泡能夠以微小、可調(diào)整大小的形式出現(xiàn),但它們必須滿足一個(gè)或多個(gè)的條件,才能被通知 API 給調(diào)用。
至于徹底棄用 SYSTEM_ALERT_WINDOW API 的時(shí)間,谷歌尚未給出確切的時(shí)間表。但是對(duì)于開(kāi)發(fā)者來(lái)說(shuō),現(xiàn)在也是時(shí)候做好遷移至 Bubbles API 的準(zhǔn)備了。