解決方法:
在清單文件AndroidManifest.xml中添加 : android:requestLegacyExternalStorage="true"
再說問題:
選擇手機中的文件(照片)
同樣的代碼,在 compileSdkVersion = 27 是沒有問題的;
但是在compileSdkVersion = 29 AndroidX ,AndroidManifest.xml中的權限、Android6.0動態權限都是允許的,報錯說沒有權限FileNotFoundException: open failed: EACCES (Permission denied);
折騰了很久,最後在清單文件 application節點下添加 android:requestLegacyExternalStorage="true" 解決問題;
原因:
AndroidQ分區儲存權限更變,對於SDK >= 28的生效。添加android:requestLegacyExternalStorage="true"後還是使用原來的策略;
具體細節請看谷歌官方文檔:https://developer.android.google.cn/about/versions/10/privacy/changes
小米AndroidQ適配:https://dev.mi.com/console/doc/detail?pId=1697
華爲AndroidQ適配:https://developer.huawei.com/consumer/cn/devservice/doc/50127
OPPO AndroidQ適配:https://open.oppomobile.com/wiki/doc#id=10432
VIVO AndroidQ適配:https://vcl.vivo.com.cn/#/home/index