android 10 targetSdkVersion 29 真的不能在sd創建文件夾了?

android 10 對系統的文件系統做了很多優化,爲了更好的保護用戶隱私,同時對開發者來時說也是一種約束,不能再取得了,

WRITE_EXTERNAL_STORAGE 權限後可以肆無忌憚的在用戶的根目錄下創建數據和文件。

      今天我就遇到了一個問題,因爲先前瞭解過10的文件系統 優化,但是時間久了忘記了,幾天在我的10 的機子上測試,創建了一個項目,在創建目錄的時候竟然不成功,權限完全沒有問題,代碼也沒有問題,但是就是不成功,提示權限被拒絕,這是咋回事,這個糾結了半天時間,一直沒有找到問題,最後看到有人說在manifist 中添加

android:requestLegacyExternalStorage="true" 我才恍然大悟,10的文件系統改動了 並且我用的targetSdkVersion 是29

,可不是麼,這樣以後不行了,加上這句就可以操作了。

   看下10 文件系統的改動。

看到第六條,就知道了,這條權限被廢棄了。

Environment.getExternalStorageDirectory().getAbsolutePath(); 
在根目錄下創建文件行不通了。當前,google 也沒有一步到位強制,不能使用,在sd 卡下的操作。targetSdkVersion  大於等於29 時,也給出方案,
在manifist 中加android:requestLegacyExternalStorage="true" 
就可以使用了,但是這只是一個臨時方案,還是按照官方規範操作比較靠譜。

參考:https://juejin.im/post/5db9760251882557301cb819

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章