文章

顯示從 2月, 2025 起發佈的文章

Flutter 錄音應用中的權限請求問題

在開發 Flutter 錄音應用時,除了在 AndroidManifest.xml 中正確聲明必要權限外,還必須在程式執行期間動態請求權限,才能順利使用錄音功能。隨著 Android 系統版本的演進,各個版本對權限管理的要求也有所不同。本文將重點說明以下三個部分: 動態請求權限的重要性 Android 版本差異對權限請求的影響 完整範例程式碼的逐步解析 一、為什麼需要動態請求權限? 從 Android 6.0(API 23)開始,許多敏感權限(如錄音、存取檔案)必須在應用運行時向使用者動態請求。如果僅在 AndroidManifest.xml 中聲明權限,而不在程式碼中實際請求,則應用將無法使用這些功能。 常見的權限包括: 錄音權限 : RECORD_AUDIO 檔案存取權限 : Android 12 及以下: READ_EXTERNAL_STORAGE  和  WRITE_EXTERNAL_STORAGE Android 13+: READ_MEDIA_AUDIO (在 Flutter 的 permission_handler 套件中使用  Permission.audio  來請求) 前台服務權限(Android 14+) :例如  FOREGROUND_SERVICE_MICROPHONE ,用於需要前台服務的長時間錄音 二、Android 版本差異與權限請求 隨著 Android 版本的更新,權限管理也在發生變化: Android 6.0+(API 23) 需要動態請求  RECORD_AUDIO  權限。 Android 13+(API 33) 存取錄音檔案的權限由原本的  READ_EXTERNAL_STORAGE  轉換為  READ_MEDIA_AUDIO ,因此在 Flutter 中請求存取權限時應使用  Permission.audio 。 Android 14+(API 34) 如果應用採用前台服務錄音(例如長時間錄音),則可能需要額外的前台服務權限(如  FOREGROUND_SERVICE_MICROPHONE )來保證服務正常運作。 根據這些版本差異,我們需要在程式碼中根據當前設備的 Android 版本動態調整請求權限的...