解決方法
剛開始在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"
位置如下
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
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ā)生了變化。
具體請參考:
[https://blog.csdn.net/irizhao/article/details/94121551]