簡體   English   中英

Android Oreo(API 26) - 在外部存儲中創建目錄

[英]Android Oreo (API 26) - Create dir in external storage

我一直在nougat上開發一個應用程序,它在外部存儲中創建一個目錄。

我過去常常這樣做:

final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Chords/Processed Audio");
dir.mkdirs();

此代碼似乎不適用於API 26(Android Oreo)。 目錄未創建。

我怎樣才能實現相同的功能,最好適用於從API 21到API 26的所有Android版本?

在運行Android 8.0的Nexus 5X上運行現有代碼沒有問題。 使用adb shell ls /storage/emulated/0 ,我看到Chores/ ,在里面我看到Processed Audio/ 這適用於具有WRITE_EXTERNAL_STORAGE權限的應用程序,包括運行時權限。

理所當然地說,不要使用字符串連接來創建File對象。 相反,使用:

final File dir = new File(new File(Environment.getExternalStorageDirectory(), "Chords"), "Processed Audio");

@Daniele,請參閱https://stackoverflow.com/a/44455957/966789https://stackoverflow.com/a/33031091/966789(Android為Android 6.0添加了新的權限模型(Marshmallow)。如果你的targetSdkVersion> = 23如果您在Marshmallow(或更高版本)設備上運行,則可能需要啟用運行時權限。您還應該閱讀有關運行時權限更改的更多信息。如果您使用的是targetSdkVersion> = 24,則還必須將FileProvider配置為show in以下示例使用com.codepath.fileprovider並且應該與指定的權限XML標記匹配)

暫無
暫無

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

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