2 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
嘗試改變這一行:
File sdir = new File (Environment.getExternalStorageDirectory().getpath(), "/DBTEST/");
到
File sdir = new File (Environment.getExternalFilesDir(null) + "/DBTEST/");
根據(jù)開發(fā)者文檔:
getExternalStorageDirectory() - 此方法在 API 級(jí)別 29 中已棄用。為了提高用戶隱私,不推薦直接訪問(wèn)共享/外部存儲(chǔ)設(shè)備。當(dāng)應(yīng)用程序以 Build.VERSION_CODES.Q 為目標(biāo)時(shí),應(yīng)用程序無(wú)法再直接訪問(wèn)從此方法返回的路徑。應(yīng)用可以通過(guò)遷移到 Context#getExternalFilesDir(String)、MediaStore 或 Intent#ACTION_OPEN_DOCUMENT 等替代方案來(lái)繼續(xù)訪問(wèn)共享/外部存儲(chǔ)上存儲(chǔ)的內(nèi)容。
getExternalFilesDir(null)
將返回您的應(yīng)用程序存儲(chǔ)文件夾(內(nèi)部存儲(chǔ))/Android/data/your.app.name/file/
如果您想訪問(wèn)某些操作系統(tǒng)定義的文件夾,您只需傳遞此處定義的環(huán)境常量:
和這里
https://developer.android.com/reference/android/os/Environment
在“字段”部分下。
前任。下載將是:getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
這是 Android-Q 中引入的隱私限制。當(dāng)應(yīng)用程序以 API 29 為目標(biāo)并且應(yīng)用程序不再可以直接訪問(wèn)從getExternalStorageDirectory方法返回的路徑時(shí),不推薦直接訪問(wèn)共享/外部存儲(chǔ)設(shè)備。使用應(yīng)用程序特定的目錄來(lái)寫入和讀取文件。
默認(rèn)情況下,面向 Android 10 及更高版本的應(yīng)用會(huì)獲得對(duì)外部存儲(chǔ)或范圍存儲(chǔ)的有限訪問(wèn)權(quán)限。此類應(yīng)用程序可以查看外部存儲(chǔ)設(shè)備中的以下類型的文件,而無(wú)需請(qǐng)求任何與存儲(chǔ)相關(guān)的用戶權(quán)限:
應(yīng)用程序特定目錄中的文件,使用getExternalFilesDir()訪問(wèn)。
應(yīng)用程序從媒體商店創(chuàng)建的照片、視頻和音頻剪輯。
添加回答
舉報(bào)