Android10+ FileNotFoundException: open failed: EACCES (Permission denied)

背景原因

Android 10(API 級別 29)引入了多項功能和行爲變更,目的是更好地保護用戶的隱私權。具體變更請跳轉:https://developer.android.google.cn/about/versions/10/privacy/changes
在這裏插入圖片描述
android Q 規定了APP有兩種外部存儲空間視圖模式:Legacy ViewFiltered View。採用了新的分區儲存權限,老的存儲權限READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE廢棄,替換成新的存儲權限android.permission.READ_MEDIA_AUDIOandroid.permission.READ_MEDIA_IMAGESandroid.permission.READ_MEDIA_VIDEO,並且只提供了多媒體文件的讀權限,未提供寫權限,現在應用沒有權限直接刪除別的應用生成的任何文件,包括多媒體文件。

解決方案

  1. 自降版本 compileSdkVersion <= 27 (當然這個不建議,畢竟要跟隨潮流)
  2. 在清單文件AndroidManifest.xml中添加 : android:requestLegacyExternalStorage="true" (指定分區按照以前的模式,也不是長久處理方式)
  3. 使用FileProviderContent Uri替換File Uri
    可以參考:
    華爲:Google Q版本應用兼容性整改指導
    OPPO:Android Q版本應用兼容性適配指導
    郭霖:Android 10適配要點,作用域存儲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章