如何應對 Android 13 開發中的版本差異?關鍵技巧大公開!

這篇文章將與您分享我的開發經驗,
著重於探討 Android 版本升級帶來的挑戰及解決方案。
透過分析我所遇到的問題,
希望能為您在開發過程中遇到類似問題提供一些有價值的見解。

Android 13以上 電池用量新限制:參考文件
  • Android 13 為目標平台時,除非應用因其他原因啟動,否則係統不會傳送以下任何廣播:
    • BOOT_COMPLETED
    • LOCKED_BOOT_COMPLETED
把BUILD_SDK版本升上33後 ByteArrayOutputStream內多了一個 writeBytes(byte data[])方法
  • 剛好之前在開發遇到剛好有人有自己寫了一個writeBytes方法 所以剛好重名,導致編譯出錯
  • 這邊若有考慮要把build sdk升上去 project owner可以考慮移除,改名或在前面加入public android13_lib_error.png
Device Admin permission行為調整
  • 如果有Device Admin 權限,未使用應用程式則移除權限則永遠關閉。 (自測發現如果把 Device admin 權限關閉,此權限還是制灰無法修改)
Android 13 存取權限細化
  • 只要求舊的權限會crash,不過可以用所有檔案存取權取代 android13_access_permission.png
  • AirDroid有請求所有檔案存取權,所以目前不用修改,下方為跳轉到該頁面的Intent
    new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
  • 遇到要修改可參考demo:
Android 13 通知權限變化
  • 因為Android 13 預設停用通知功能:通知權限改變官方文件
  • 所以執行NotificationManager時 系統就會要求開啟通知

  • 改變的行為可參考 網路上網友適配的文章

  • 要自行處理權限的話需要升到target SDK 33 才有Manifest.permission.POST_NOTIFICATIONS權限可處理

    或target SDK 32 時 把 初始化NotificationManager移到後面 但就不能針對Manifest.permission.POST_NOTIFICATIONS 做一些 使用者選拒絕時的處理

  • target SDK 33 demo patch: Demo

You might also enjoy