我們今天推出 Android 17 的第二個 Beta 版,持續打造以隱私權、安全性和效能為優先的平台。本次更新提供多項新功能,包括 EyeDropper API 和可保護隱私權的聯絡人挑選器。我們也新增了進階測距、跨裝置交接 API 等功能。
本次發布的內容延續了我們的發布節奏轉變,在第 2 季發布年度主要 SDK 版本後,接著發布次要 SDK 更新。
使用者體驗與系統 UI
泡泡
泡泡是視窗模式功能,提供與訊息泡泡 API 不同的全新浮動 UI 體驗。使用者只要在啟動器中長按應用程式圖示,即可在手機、摺疊式裝置或平板電腦上建立應用程式泡泡。在大螢幕上,泡泡列會顯示在工作列中,使用者可以在泡泡列中整理泡泡、在泡泡間移動,以及將泡泡移到螢幕上的錨點或從錨點移開。
請按照支援多視窗模式的指南操作,確保應用程式以即時通訊泡泡形式運作時不會出錯。
Beta 2 尚未完全啟用對話泡泡功能。這些功能將在 Android 17 的後續版本中推出。
EyeDropper API
新的系統層級 EyeDropper API 可讓應用程式要求顯示器上任何像素的顏色,不需要敏感的螢幕截圖權限。
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> if (result.resultCode == Activity.RESULT_OK) { val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK) // Use the picked color in your app } } fun launchColorPicker() { val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER) eyeDropperLauncher.launch(intent) }
聯絡人挑選器
透過 ACTION_PICK_CONTACTS 啟用的全新系統層級聯絡人選擇工具,只會授予使用者要求的特定資料欄位暫時性讀取權限 (以工作階段為準),因此可減少對廣泛 READ_CONTACTS 權限的需求。此外,你也可以從裝置的個人或工作資料夾中選取檔案。
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
val uri = it.data?.data ?: return@rememberLauncherForActivityResult
// Handle result logic
processContactPickerResults(uri)
}
}
val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
putExtra(EXTRA_ALLOW_MULTIPLE, true)
putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}
contactPicker.launch(intent)更輕鬆地透過觸控板擷取指標
先前,當應用程式擷取指標時,觸控板回報事件的方式與滑鼠大不相同,觸控板會回報手指在觸控板上的位置,而不是滑鼠回報的相對移動。這使得第一人稱遊戲難以適當支援觸控板。現在,系統預設會在擷取觸控板時辨識指標移動和捲動手勢,並像滑鼠事件一樣回報。您仍可明確要求以新的「絕對」模式擷取資料,取得舊的詳細手指位置資料。
// To request the new default relative mode (mouse-like events) // This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE view.requestPointerCapture() // To request the legacy absolute mode (raw touch coordinates) view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)
互動式選擇器靜止邊界
在 Android 的 ChooserSession 上呼叫 getInitialRestingBounds,應用程式就能在動畫和資料載入完成後,找出「選擇器」佔用的目標位置,進而進行更完善的 UI 調整。
連線與跨裝置
跨裝置應用程式交接
您可以使用新的 Handoff API 指定要在其他裝置 (例如 Android 平板電腦) 上繼續執行的應用程式狀態。選擇啟用後,系統會透過 CompanionDeviceManager 同步處理狀態,並在使用者附近裝置的啟動器中顯示交接建議。這項功能旨在提供流暢的任務連續性,讓使用者在 Android 生態系統中,從工作流程中斷的地方繼續作業。重要的是,「接續互通」功能支援原生應用程式間的轉移,以及應用程式到網頁的備援,提供最大的彈性,即使接收裝置未安裝原生應用程式,也能確保完整體驗。
進階測距 API
我們即將支援 2 項新的測距技術:
- UWB DL-TDOA,可讓應用程式使用 UWB 進行室內導覽。這個 API 介面符合 FIRA (Fine Ranging Consortium) 4.0 DL-TDOA 規格,可提供保護隱私權的室內導航功能 (避免錨點追蹤裝置)。
- 附近裝置偵測:可讓應用程式使用 WFA (Wi-Fi 聯盟) 採用的新測距規格。與現有的 Wi-Fi Aware 測距規格相比,這項技術的可靠性和準確度都更高。
數據方案強化功能
為提升媒體品質,應用程式現在可以使用 getStreamingAppMaxDownlinkKbps 和 getStreamingAppMaxUplinkKbps,擷取電信業者為串流應用程式分配的最大資料速率。
核心功能、隱私權和效能
區域網路存取權
Android 17 導入了 ACCESS_LOCAL_NETWORK 執行階段權限,可保護使用者免於未經授權的區域網路存取。由於這項權限屬於現有的 NEARBY_DEVICES 權限群組,因此如果使用者已授予其他 NEARBY_DEVICES 權限,系統就不會再次提示。應用程式宣告並要求這項權限後,即可探索區域網路 (LAN) 上的裝置並與之連線,例如智慧住宅裝置或投放接收器。這樣做可防止惡意應用程式利用不受限制的區域網路存取權,暗中追蹤使用者並建立數位指紋。如果應用程式指定 Android 17 以上版本,現在有兩種方式可與區域網路裝置保持通訊:採用系統中介的裝置選擇器 (可保護隱私權),略過權限提示,或在執行階段明確要求這項新權限,以維持區域網路通訊。
時區偏移變更廣播
Android 現在提供可靠的廣播意圖 ACTION_TIMEZONE_OFFSET_CHANGED,會在系統時區偏移量變更時觸發,例如日光節約時間轉換期間。這項意圖可補足現有的廣播意圖 ACTION_TIME_CHANGED 和 ACTION_TIMEZONE_CHANGED,前者會在 Unix 時間戳記變更時觸發,後者則會在時區 ID 變更時觸發。
NPU 管理與優先順序
以 Android 17 為目標且需要直接存取 NPU 的應用程式,必須在資訊清單中宣告 FEATURE_NEURAL_PROCESSING_UNIT,以免無法存取 NPU。包括使用 LiteRT NPU 委派、廠商專屬 SDK,以及已淘汰的 NNAPI。
支援 ICU 78 和 Unicode 17
核心國際化程式庫已更新至 ICU 78,擴大支援新的指令碼、字元和表情符號區塊,並可直接格式化 時間 物件。
簡訊動態密碼防護
Android 將擴大簡訊動態密碼保護機制,自動延遲存取含有動態密碼的簡訊。先前,這項防護功能主要著重於簡訊擷取器格式,也就是延遲傳送含有簡訊擷取器雜湊的訊息,大多數應用程式的延遲時間為三小時。不過,對於預設訊息應用程式等特定應用程式,以及與雜湊對應的應用程式,則不適用這項延遲規定。這項更新會將防護範圍擴大至所有含有動態密碼的簡訊。為防範 OTP 遭竊,含有 OTP 的簡訊會在三小時後才開放存取 (大多數應用程式適用)。系統會暫緩 SMS_RECEIVED_ACTION 廣播,並篩除 簡訊供應商資料庫查詢。簡訊會在延遲後傳送至這些應用程式。
延遲存取 WebOTP 格式的簡訊
如果應用程式有權讀取簡訊,但並非動態密碼的預期接收者 (由網域驗證判斷),則必須經過三小時後才能存取 WebOTP 格式的簡訊。這項異動旨在提升使用者安全性,確保只有與訊息中提及的網域相關聯的應用程式,才能以程式輔助方式讀取驗證碼。無論目標 API 級別為何,所有應用程式都會受到這項異動影響。
延遲存取含有動態密碼的標準簡訊
如果簡訊含有一次性密碼,但未使用 WebOTP 或 SMS Retriever 格式,大多數應用程式只能在三小時後存取這類簡訊。這項異動只會影響指定 Android 17 (API 級別 37) 以上版本的應用程式。
部分應用程式 (例如預設簡訊應用程式、Google 助理應用程式,以及連結裝置的隨附應用程式等) 不會受到這項異動影響。
所有依賴讀取簡訊來擷取動態密碼的應用程式,都應改用 SMS Retriever 或 SMS User Consent API,確保功能不受影響。
Android 17 時間表
我們預計在 3 月從這個 Beta 版快速轉移至平台穩定性里程碑。在這個里程碑,我們會提供最終的 SDK/NDK API。從那時起,您的應用程式就能以 SDK 37 為目標,並發布至 Google Play,協助您在 Android 17 正式發布前的幾個月內完成測試並收集使用者意見回饋。
發布年份
我們預計會透過一系列的季度版本,持續為 Android 17 提供更新。第 2 季的發布版本是唯一會推出應用程式破壞性行為變更的版本。我們預計在第 4 季發布次要 SDK 版本,其中包含其他 API 和功能。
開始使用 Android 17
您可以註冊任何支援的 Pixel 裝置,透過無線更新取得這個版本和日後的 Android Beta 版更新。如果你沒有 Pixel 裝置,可以在 Android Studio 中使用 Android Emulator 搭配 64 位元系統映像檔。
如果你目前已加入 Android Beta 版計畫,系統會提供無線更新,將裝置更新至 Beta 版 2。
如果您使用 Android 26Q1 Beta 版,並想採用 26Q1 的最終穩定版,然後退出 Beta 版,請忽略 26Q2 Beta 版 2 的無線更新,並等待 26Q1 發布。
歡迎前往意見回饋頁面回報問題及提交功能要求。越早收到意見回饋,就越有機會納入最終版本。
為獲得最佳 Android 17 開發體驗,建議使用最新預先發布版 Android Studio (Panda)。設定完成後,請執行下列操作:
- 請根據新版 SDK 進行編譯、在 CI 環境中測試,並在意見回饋頁面的追蹤工具中回報任何問題。
- 測試目前應用程式的相容性,瞭解應用程式是否受到 Android 17 變更的影響,並在執行 Android 17 的裝置或模擬器上安裝應用程式,進行廣泛測試。
在 Android 17 發布週期內,我們會定期更新搶先版/Beta 版系統映像檔和 SDK。安裝 Beta 版後,系統會自動更新
之後所有的預先發布版本和 Beta 版本。
如要瞭解詳情,請前往 Android 17 開發人員網站。
加入討論
我們將於今年稍晚推出 Android 17 正式發布版,並邁向 平台穩定性,因此您的意見回饋仍是我們最寶貴的資產。無論您是 Canary 管道的搶先體驗者,還是在 Beta 2 版上測試的應用程式開發人員,都歡迎加入我們的社群並提供意見回饋。我們洗耳恭聽。
繼續閱讀
-
產品新訊
今天,我們推出最新的先進開放式模型 Gemma 4,具備複雜的推論和自主工具呼叫能力,可提升 Android 開發體驗。
Matthew McCullough • 閱讀時間:2 分鐘
-
產品新訊
Android 17 今天正式推出 Beta 版 3,達到平台穩定性。這表示 API 介面已鎖定,您可以執行最終相容性測試,並將指定 Android 17 的應用程式發布到 Play 商店。
Matthew McCullough • 5 分鐘可讀完
-
產品新訊
我們希望您能更快速輕鬆地建構優質 Android 應用程式,而協助您提升工作效率的其中一個方法,就是讓您隨時都能運用 AI。
Matthew McCullough • 閱讀時間:2 分鐘
隨時掌握最新消息
每週透過電子郵件接收最新的 Android 開發洞察資訊。