簡體   English   中英

2020年如何將文件保存到媒體目錄中的外部存儲?

[英]How to save a file to external storage in the media directory in 2020?

我有個問題。

如何將文件從網絡保存到 android 設備的外部存儲,其中Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)被貶低?

我的代碼:

    private void download(Context mContext) throws IOException {
        String requestUrl = "http://someresource/..."
        URL url = new URL(requestUrl);
        InputStream in = url.openStream();
        mContext.getFilesDir();
        URI uri = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_MUSIC).toURI();
        Files.copy(in, Paths.get(uri.getPath() + "/_test.mp3"), StandardCopyOption.REPLACE_EXISTING);
        in.close();
        System.out.println("finished!");
    }

我收到錯誤W/System.err: java.nio.file.AccessDeniedException: /storage/emulated/0/Music/_test.mp3

我還閱讀了文章https://developer.android.com/training/data-storage/shared/media#java但我想這更像是篡改現有媒體文件的指南,例如搜索或編輯文件標簽等,而不是簡單地將文件保存在媒體目錄中。

更新:我的應用需要完成兩個任務。 我想將一個 mp3 文件保存到上述目錄中,並從該目錄中讀取文件。

下面的 Q:使用Environment.getExternalStorageDirectory().getPath()+"/Music"; 返回 Android 設備的內置 flash memory 上的音樂文件夾。 以這種方式,我想知道如何在 Android 設備(插入時)的 SD 卡上獲取音樂文件夾。

由於Q:上述方法返回一個目錄,應用程序不再可以直接訪問該目錄。 我要完成的任務與上面提到的相同。 正如@blackapps 所假設的那樣,使用 MediaStore Class 在 Q 中更可取。 但我究竟該怎么做呢?

對於 android 10 和 11,將此行添加到 android 清單文件中的<application>元素。 希望它會起作用:

<application
android:requestLegacyExternalStorage="true"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM