註意:當用戶按您應用旁邊的停止按鈕時,系統會停止您的整個應用,而不僅僅是正在運行的前臺服務。
利用 JobScheduler,應用可使用 JobInfo.Builder.setPrefetch() 將特定作業標記為“預提取”作業,這意味著,理想情況下這些作業應該在應用下壹次啟動前提前壹點運行,以提升用戶體驗。過去,JobScheduler 僅使用該信號讓預提取作業有機會使用免費或多余的數據。
在 Android 13 中,系統現在會嘗試確定應用下次啟動的時間,並根據該估算值運行預提取作業。應用應嘗試使用預提取作業來完成他們想要在下次應用啟動前完成的任何工作。
Android 13(API 級別 33)引入了電池資源利用率,它為系統提供了多種方法來更好地管理設備電池續航時間:
Android 13(API 級別 33)引入了新的運行時通知權限:POST_NOTIFICATIONS。此更改有助於用戶專註於最重要的通知。
註意:與媒體會話以及自行管理通話的應用相關的通知不受此行為變更的影響。
如果您的應用允許用戶將敏感內容(例如密碼或信用卡信息)復制到剪貼板,則必須在調用 ClipboardManager#setPrimaryClip() 之前向 ClipData 的 ClipDescription 添加壹個標誌。添加此標誌可阻止敏感內容出現在內容預覽中。
如需標記敏感內容,請向 ClipDescription 添加壹個布爾型 extra。無論應用的目標 API 級別如何,所有應用都應這麽做。
如果您的應用使用已廢棄的 android:sharedUserId 屬性,並且不再依賴於該屬性的功能,您可以將 android:sharedUserMaxSdkVersion 屬性設置為 32,這個新屬性會告知系統,您的應用不再依賴於***享用戶 ID。如果您的應用聲明 android:sharedUserMaxSdkVersion 並且首次安裝在搭載 Android 13 或更高版本的設備上,則應用的行為就像您從未定義過 android:sharedUserId 壹樣。更新後的應用仍會使用現有的***享用戶 ID。
***享用戶 ID 會在軟件包管理器中導致具有不確定性的行為。您的應用應使用適當的通信機制(例如服務和 content provider),在***享組件之間實現互操作性。
註意:如果您已在清單中定義了 android:sharedUserId 屬性,請不要將其移除。這樣做會導致應用更新失敗。
如果用戶拒絕通知權限,他們仍會在前臺服務 (FGS) 任務管理器中看到與這些前臺服務相關的通知,但不會在抽屜式通知欄中看到這些通知。
在以前的 Android 版本中,用戶需要向您的應用授予 ACCESS_FINE_LOCATION 權限,應用才能完成與熱點相關的多個常見 Wi-Fi 用例、Wi-Fi 直連、Wi-Fi RTT 等。
由於用戶很難將位置信息權限與 Wi-Fi 功能相關聯,因此 Android 13(API 級別 33)在 NEARBY_DEVICES 權限組中引入了新的運行時權限,適用於管理設備與附近 Wi-Fi 接入點連接情況的應用。此權限 (NEARBY_WIFI_DEVICES) 可滿足這些 Wi-Fi 用例。
只要您的應用不會通過 Wi-Fi API 推導物理位置,那麽當您以 Android 13 或更高版本為目標平臺並使用 Wi-Fi API 時,就可以請求 NEARBY_WIFI_DEVICES 而不是 ACCESS_FINE_LOCATION。
註意:僅當您調用 Wi-Fi API 時,此更改才會影響您的應用。
如果您的應用以 Android 13 為目標平臺,您必須請求壹個或多個新權限,而不是 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 權限。如果用戶之前向您的應用授予了 READ_EXTERNAL_STORAGE 權限,系統會自動向您的應用授予每個新權限。
註意:如果您的應用只需要訪問圖片、照片和視頻,請考慮使用照片選擇器,而不是聲明 READ_MEDIA_IMAGES和 READ_MEDIA_VIDEO 權限。
註意:您無需再聲明 WRITE_EXTERNAL_STORAGE 權限。
如果您的應用以 Android 13 為目標平臺,並且在後臺運行時需要訪問身體傳感器信息,那麽除了現有的 BODY_SENSORS 權限外,您還必須聲明新的 BODY_SENSORS_BACKGROUND 權限。
當您的應用向以 Android 13 或更高版本為目標平臺的其他應用的導出組件發送 intent 時,僅當該 intent 與接收應用中的 < intent-filter > 元素匹配時,系統才會傳送該 intent。不匹配的 intent 會被屏蔽。
為了幫助提高運行時接收器的安全性,Android 13 允許您指定您應用中的特定廣播接收器是否應被導出以及是否對設備上的其他應用可見。如果導出廣播接收器,其他應用將可以向您的應用發送不受保護的廣播。此導出配置在以 Android 13 或更高版本為目標平臺的應用中可用,有助於防止壹個主要的應用漏洞來源。
在以前的 Android 版本中,設備上的任何應用都可以向動態註冊的接收器發送不受保護的廣播,除非該接收器受簽名權限的保護。
Android 13(API 級別 33)提供了全新的照片選擇器體驗。應用啟動照片選擇器時,用戶可選擇與應用分享特定圖片和視頻(如個人資料照片),而不是授予應用查看整個媒體庫的權限。
照片選擇器可為用戶提供更好的隱私保護,因為您的應用無需聲明任何運行時權限。此外,照片選擇器還為應用提供內置標準化界面,從而打造更壹致的用戶體驗。
註意:現在,我們推薦使用照片選擇器來訪問用戶的照片和視頻。
Android 13(API 級別 33)在 NEARBY_DEVICES 權限組中引入了壹項新的運行時權限,它適用於會管理設備與附近 Wi-Fi 接入點連接情況的應用。這些應用在調用多個不同的 Wi-Fi API 時必須聲明新的權限 NEARBY_WIFI_DEVICES。此外,只要應用不會通過 Wi-Fi API 推導物理位置,那麽在以 Android 13 或更高版本為目標平臺時,就無需聲明 ACCESS_FINE_LOCATION 權限。
如果您的應用以 Android 13 為目標平臺,您可以使用自動授予應用的 USE_EXACT_ALARM 權限。不過,您的應用若要使用此權限,必須至少滿足以下條件之壹:
如果您的應用設置了精確鬧鐘,但不符合前面列表中顯示的任壹情況,請改為繼續聲明 SCHEDULE_EXACT_ALARM 權限,並為用戶拒絕授予您應用相應訪問權限的情況做好準備。
從 Android 13 開始,應用可以撤消先前由系統或用戶授予的運行時權限。此 API 可讓您的應用執行增強隱私權的任務,如下所示:
如需撤消特定運行時權限,請將該權限的名稱傳入 revokeSelfPermissionOnKill()。如需同時撤消壹組運行時權限,請將這組權限的名稱傳入 revokeSelfPermissionsOnKill()。撤消是異步發生的,會終止與您應用的 UID 相關聯的所有進程。
Android 13 可支持 APK 簽名方案 v3.1,此方案在現有的 APK 簽名方案 v3 的基礎上進行了改進,解決了 APK 簽名方案 v3 的壹些已知問題。具體而言,v3.1 簽名方案允許應用在單個 APK 中同時支持原始簽名者和輪替簽名者。此外,該方案還支持 SDK 版本定位功能,這會允許輪替定位到更高版本的平臺。
v3.1 簽名方案使用在 12L 或更低版本中無法識別的新分塊 ID。因此,平臺會應用以下簽名者行為:
尚未輪替其簽名密鑰的應用無需執行任何其他操作。每當這些應用選擇輪替時,系統都會默認應用新的 v3.1 簽名方案。