使用外部儲存

外部儲存是另一種型別的儲存,我們可以使用它來將檔案儲存到使用者的裝置。它與內部儲存有一些關鍵的區別,即:

  • 它並不總是可用。在可移動介質(SD 卡)的情況下,使用者可以簡單地移除儲存器。
  • 它不是私人的。使用者(和其他應用程式)可以訪問這些檔案。
  • 如果使用者解除安裝了應用程式,則將刪除使用 getExternalFilesDir() 檢索的目錄中儲存的檔案。

要使用外部儲存,我們需要首先獲得適當的許可權。你需要使用:

要授予這些許可權,你需要在 AndroidManifest.xml 中識別它們

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

注意: 如果你使用的是 API 級別 23 或更高版本,則它們是危險許可權 ,因此你需要在執行時請求許可權 。 **** ****

在嘗試從外部儲存寫入或讀取之前,應始終檢查儲存介質是否可用。

String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
    // Available to read and write
}
if (state.equals(Environment.MEDIA_MOUNTED) || 
        state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
    // Available to at least read
}

將檔案寫入外部儲存時,應確定是將檔案識別為公共還是私有。雖然使用者和裝置上的其他應用程式仍然可以訪問這兩種型別的檔案,但它們之間存在重要區別。

當使用者解除安裝應用程式時,公共檔案應保留在裝置上。應儲存為 Public 的檔案示例是通過你的應用程式獲取的照片。

當使用者解除安裝應用程式時,應刪除所有私人檔案。這些型別的檔案將是特定於應用程式的,並且對使用者或其他應用程式無用。防爆。你的應用程式下載/使用的臨時檔案。

以下是如何訪問公共檔案和私有檔案的 Documents 目錄。

上市

// Access your app's directory in the device's Public documents directory
File docs = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_DOCUMENTS), "YourAppDirectory");
// Make the directory if it does not yet exist
myDocs.mkdirs();

私人的

// Access your app's Private documents directory
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS), 
        "YourAppDirectory");
// Make the directory if it does not yet exist
myDocs.mkdirs();