2 回答

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

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