![](/img/trans.png)
[英]How to create a folder “beam” on SDcard (“/ sdcard / beam”)
[英]How to create a new folder in root of SdCard on Android?
我想在SdCard的根目錄或主頁中創建一個新文件夾。 我已經使用這種方法來獲取SdCard的位置:
File("/storage/sdcard1", "New folder")
但是這種方法在某些設備上不起作用。 我需要一種適用於所有設備並獲得SdCard位置的方法。
我也嘗試過:
File(Environment.getExternalStorageDirectory(),"New folder")
但是此方法針對的是設備存儲。 但是我想要SdCard。
當您要創建文件夾時,運行以下代碼行:
startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);
從出現的對話框中選擇您的SD卡。 關閉對話框后,將調用以下方法,並在其中創建目錄。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
// Check for the integer request code originally supplied to startResolutionForResult().
case 42:
if (resultCode != RESULT_OK) return;
if(data != null) {
Uri treeUri = data.getData();
grantUriPermission(getPackageName(), treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri );
DocumentFile myDirectory = pickedDir.createDirectory("MyDirectory");
}
break;
default: break;
}
}
PS1:42是我使用的隨機數。 如果願意,請選擇任何唯一的正整數而不是42。 更好的是使其恆定。
PS2:在onActivityResult
您可以將treeUri
值保存到某些變量,數據庫等中,因此每次需要在SD根目錄中創建更多文件夾或文件時,都可以隨時使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.