一個bug引發的Android分割槽儲存的思考

乔瑟琳發表於2024-04-11

**問題:**
在安卓手機上實現儲存圖片的功能,部分手機儲存失敗。報瞭如圖一的錯誤:


根據報錯資訊是沒有許可權,但仔細在程式碼內檢查是有申請到儲存許可權的,並且該功能在其他手機上沒問題

**實現流程:**
仔細看我們的實現流程如圖二所示:


整個過程看上去都沒問題。
但是在出現問題的手機上,使用device explorer確實訪問訪問不了storage/emulated/0/Pictures這個路徑。在功能正常的手機,是可以訪問這個路徑的。
圖三:功能異常的手機sd卡目錄


圖四:功能正常的手機sd卡目錄

**解決**:
原因是在Android10上,分割槽儲存的限制。
* 1.目前應用直接採用的是Android10以下的儲存方式,申請儲存許可權後將檔案寫入公共目錄。但是在Android10上面,會推薦你將檔案寫入當前應用的外部私有儲存,而不是直接透過自己寫檔案的方式去寫入外部公共目錄。
* 2.或者將當前應用禁止分割槽儲存 ,將android:requestLegacyExternalStorage="true" 加入manifest
* 3.將應用的tagrget sdk 降到28及以下

相關文章