簡體   English   中英

Android在內部“設備存儲”上創建一個新文件夾

[英]Android create a new folder on internal “Device Storage”

因此,我正在創建一個將保存圖片的應用程序。 但我想將所有圖片捆綁到主“設備存儲”目錄中的易於獲取的文件夾中。

我想保存到外部卡,但是我正在測試的設備上沒有一個,其他設備也可能沒有(最終,我將允許應用程序用戶決定是內部設備還是外部設備記憶)。

現在,我試圖找到這樣的文件夾:

String directory = "/mnt/CPB";
File mainFolder = new File(directory);
if(mainFolder.exists() && mainFolder.isDirectory()){
    Toast.makeText(getApplicationContext(), "CPB Is Made", Toast.LENGTH_SHORT).show();
} else {
    Toast.makeText(getApplicationContext(), "CPB does not exist", Toast.LENGTH_SHORT).show();
    mainFolder.mkdir();
}

這顯然是行不通的。 那我從這里去哪里呢?

在查看文件夾或連接到計算機以查看目錄時,我希望該文件夾顯示在主目錄視圖中。 另外,我是否需要Android清單中的任何類型的權限?

但我想將所有圖片捆綁到主“設備存儲”目錄中的易於獲取的文件夾中。

從上下文來看,我假設您是指Android SDK所謂的外部存儲

請注意,盡管您可能認為用另一個頂級目錄來充實用戶的外部存儲是一個好主意,但是如果用戶不同意您的評估,請不要感到震驚。

最終,我將允許應用程序用戶決定他們是否需要內部或外部存儲器

我的猜測是,您分別指的是外部存儲可移動存儲

我試圖找到這樣的文件夾:

您沒有對/mnt讀/寫權限,而用戶也無權訪問/mnt

您似乎想要的是Environment.getExternalStorageDirectory() 但是,你應該認真考慮要么Environment.getExternalStoragePublicDirectory()適用於同一地點,如照片和東西)或getExternalFilesDir()Context (用於外部存儲的應用程序特定的位置)。

我是否需要Android清單中的任何類型的權限?

外部存儲WRITE_EXTERNAL_STORAGE上的所有位置在Android 4.3及WRITE_EXTERNAL_STORAGE上都需要WRITE_EXTERNAL_STORAGE 另外,在Android WRITE_EXTERNAL_STORAGE上, Environment提供的外部存儲位置也需要WRITE_EXTERNAL_STORAGE

但是,如果使用getExternalFilesDir()WRITE_EXTERNAL_STORAGE在Android 4.4+上不需要WRITE_EXTERNAL_STORAGE 這是考慮使用該位置的另一個原因。

另請注意, WRITE_EXTERNAL_STORAGE在Android 6.0+中是dangerous許可,這意味着如果targetSdkVersion為23+,則必須在運行時要求它。 另外,無論targetSdkVersion ,用戶都可以決定不授予您該權限。 因此,避免WRITE_EXTERNAL_STORAGE通常是一個好主意。

主設備存儲不是/mnt ,通常是/storage/sdcard0 (至少在我的/storage/sdcard0 4上)

更好的是,使用getExternalStorageDirectory()

暫無
暫無

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

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