pub trait PublicStorage<R: Runtime> {
// Required methods
fn create_file_in_public_dir(
&self,
dir: impl Into<PublicDir>,
relative_path_with_subdir: impl AsRef<str>,
mime_type: Option<&str>,
) -> Result<FileUri>;
fn is_audiobooks_dir_available(&self) -> Result<bool>;
fn is_recordings_dir_available(&self) -> Result<bool>;
fn app_handle(&self) -> &AppHandle<R>;
// Provided method
fn create_file_in_public_app_dir(
&self,
dir: impl Into<PublicDir>,
relative_path: impl AsRef<str>,
mime_type: Option<&str>,
) -> Result<FileUri> { ... }
}Expand description
File storage that is available to other applications and users.
Required Methods§
Sourcefn create_file_in_public_dir(
&self,
dir: impl Into<PublicDir>,
relative_path_with_subdir: impl AsRef<str>,
mime_type: Option<&str>,
) -> Result<FileUri>
fn create_file_in_public_dir( &self, dir: impl Into<PublicDir>, relative_path_with_subdir: impl AsRef<str>, mime_type: Option<&str>, ) -> Result<FileUri>
Creates a new empty file in the specified public directory and returns a persistent read-write URI.
The created file has following features :
- Will be registered with the corresponding MediaStore as needed.
- Always supports remove.
- Not removed when the app is uninstalled.
§Args
-
dir :
The base directory. -
relative_path_with_subdir :
The file path relative to the base directory.
If a file with the same name already exists, a sequential number will be appended to ensure uniqueness.
Any missing subdirectories in the specified path will be created automatically.
Please specify a subdirectory in this, such asMyApp/file.txtorMyApp/2025-2-11/file.txt. Do not usefile.txt.
As shown above, it is customary to specify the app name at the beginning of the subdirectory, and in this case, usingPublicStorage::create_file_in_public_app_diris recommended. -
mime_type :
The MIME type of the file to be created.
If this is None, MIME type is inferred from the extension and if that fails,application/octet-streamis used.
When usingPublicImageDir, please use only image MIME types; using other types may cause errors. Similarly, use only the corresponding media types forPublicVideoDirandPublicAudioDir. OnlyPublicGeneralPurposeDirsupports all MIME types.
§Support
Android 10 (API level 29) or higher.
Lower are need runtime request of WRITE_EXTERNAL_STORAGE. (This option will be made available in the future)
PublicAudioDir::Audiobooks is not available on Android 9 (API level 28) and lower.
Availability on a given device can be verified by calling PublicStorage::is_audiobooks_dir_available.
PublicAudioDir::Recordings is not available on Android 11 (API level 30) and lower.
Availability on a given device can be verified by calling PublicStorage::is_recordings_dir_available.
Others are available in all Android versions.
Sourcefn is_audiobooks_dir_available(&self) -> Result<bool>
fn is_audiobooks_dir_available(&self) -> Result<bool>
Verify whether PublicAudioDir::Audiobooks is available on a given device.
§Support
All Android version.
Sourcefn is_recordings_dir_available(&self) -> Result<bool>
fn is_recordings_dir_available(&self) -> Result<bool>
Verify whether PublicAudioDir::Recordings is available on a given device.
§Support
All Android version.
fn app_handle(&self) -> &AppHandle<R>
Provided Methods§
Sourcefn create_file_in_public_app_dir(
&self,
dir: impl Into<PublicDir>,
relative_path: impl AsRef<str>,
mime_type: Option<&str>,
) -> Result<FileUri>
fn create_file_in_public_app_dir( &self, dir: impl Into<PublicDir>, relative_path: impl AsRef<str>, mime_type: Option<&str>, ) -> Result<FileUri>
See PublicStorage::create_file_in_public_dir for description.
This is the same as following:
create_file_in_public_dir(
dir,
format!("{app_name}/{relative_path}"),
mime_type
);Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.