簡體   English   中英

如何在Android的SdCard根目錄中創建一個新文件夾?

[英]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.

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