Search documentation of mob

# Mob.Storage.Android (mob v0.6.18)

Copy Markdown View Source

Android-specific storage locations and MediaStore integration.

## External files directory

`external_files_dir/1` returns the app's scoped directory on external storage (`getExternalFilesDir`). This is visible to the user via a file manager or USB, but scoped to the app — no `WRITE_EXTERNAL_STORAGE` permission required. Returns `nil` if external storage is unavailable.

Common type atoms: `:documents`, `:pictures`, `:movies`, `:music`, `:downloads`, `:dcim`. Maps to `Environment.DIRECTORY_*` constants.

## MediaStore

`save_to_media_store/3` inserts a file into the Android media library so it appears in the Gallery, Music, or Files app. It is asynchronous — the result arrives via `handle_info`:

    handle_info({:storage, :saved_to_library, path}, socket)
    handle_info({:storage, :error, :save_to_library, reason}, socket)

`type` is `:image`, `:video`, or `:audio`. On API 29+ no permission is needed for files the app created. On API 28 and below, `WRITE_EXTERNAL_STORAGE` is required — add it via:

    mix mob.enable media_store

## Summary

### Functions

external_files_dir(type \\ :documents)

Return the app's scoped external storage directory for `type`.

save_to_media_store(socket, path, type \\ :auto)

Save a file to the MediaStore so it appears in the system Gallery, Music, or Files app.

## Functions

# external_files_dir(type \\ :documents)

    @spec external_files_dir(atom()) :: String.t() | nil

Return the app's scoped external storage directory for `type`.

Returns `nil` if external storage is not available on this device.

# save_to_media_store(socket, path, type \\ :auto)

    @spec save_to_media_store(Mob.Socket.t(), String.t(), atom()) :: Mob.Socket.t()

Save a file to the MediaStore so it appears in the system Gallery, Music, or Files app.

`type` is `:image`, `:video`, or `:audio`. Defaults to `:auto`, which infers the type from the file extension.