在安卓Q(10)上操做文件讀寫時遇到的問題,進行記錄。

獲取到file的對象以後,調用 createNewFile 方法嘗試在指定目錄下生成一個文件並往文件中寫入內容,一樣的方法以前在android9及之前版本都沒問題,在網上查找了以後基本都指向了權限問題。android

後經查找網上蠻多介紹這個問題的,android Q對於文件讀寫引入了新特性,在這個版本中,READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE均受到了限制,沒法再像以前的版本直接獲取到文件。若是但願恢復以前的權限邏輯,能夠在manifest文件中設置:app

android:requestLegacyExternalStorage="true"
便可解決(但不肯定這種方法是否是臨時的方法,有可能後面谷歌會幹掉這種方式也說不定)。ui

另外,還能夠經過StorageManager的getPrimaryStorageVolume().createOpenDocumentTreeIntent()方法來進行操做,這個方法沒有辦法經過File類來操做文件,可是可使用相似的DocumentFilespa

1 <application 2         android:sharedUserId="android.uid.system"
3         android:allowBackup="true"
4         android:icon="@mipmap/ic_launcher"
5         android:label="@string/app_name"
6         android:roundIcon="@mipmap/ic_launcher_round"
7         android:supportsRtl="true"
8         android:requestLegacyExternalStorage="true"
9         android:theme="@style/AppTheme">

而後從新編譯apk,安裝打開apk,正常在指定目錄下生成了對應文件code

相關文章
相關標籤/搜索