解決方法
剛開始在AndroidManifest.xml已經(jīng)聲明了讀寫權(quán)限奋献,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
但在訪問相冊的時候,還是報錯:
open failed: EACCES (Permission denied)
網(wǎng)上的從手機設(shè)置里改權(quán)限坊饶、或者隨用隨檢驗存儲權(quán)限啥的在我這都不管用旨涝。
又發(fā)現(xiàn)了一個有效方法套媚,在AndroidManifest.xml添加一句:
android:requestLegacyExternalStorage="true"
然后成功解決問題稽寒!
原因
Android Q分區(qū)存儲權(quán)限變更及適配問題:
為了讓用戶更好地控制自己的文件扮碧,并限制文件混亂的情況,Android Q修改了APP訪問外部存儲中文件的方法。外部存儲的新特性被稱為Scoped Storage慎王。
Android Q仍然使用READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE作為面向用戶的存儲相關(guān)運行時權(quán)限蚓土,但現(xiàn)在即使獲取了這些權(quán)限,訪問外部存儲也受到了限制柬祠。APP需要這些運行時權(quán)限的情景發(fā)生了變化北戏,且各種情況下外部存儲對APP的可見性也發(fā)生了變化。