👺
Android ローカルストレージにファイルを保存する方法
MediaStoreに保存
Androidでローカルにファイルを保存する際、MediaStoreを使用した場合のやり方をメモがわりに記載しました。
下記'Video'の部分を'Images','Audio'などにかえると他のファイル形式でも対応可能です。
拡張子の部分はmimeTypeを指定してください。
/**
* 動画保存 ローカル
*/
fun saveVideoToLocal(storedFile: File, contentResolver: ContentResolver) {
try {
val storedValue = ContentValues().apply {
// ファイル名
put( MediaStore.MediaColumns.DISPLAY_NAME, "file_name")
// 拡張子
put(MediaStore.MediaColumns.MIME_TYPE, "video/mp4")
// 保存先path指定 下記指定しない場合はDownloadsフォルダに保存される
put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOCUMENTS.toString() + "/フォルダ名/")
}
val uri = contentResolver.insert(MediaStore.Files.getContentUri("external"), storedValue)
val outputStream = contentResolver.openOutputStream(uri!!)
// 保存
outputStream?.write(storedFile.toByteArray())
outputStream?.close()
// ↓保存成功イベントなどご自由に
} catch (e: IOException) {
// ↓保存失敗イベント
}
}
ちなみにContentResolberはこんな感じで取得できます。
// Actyvityから取得
val contentResolver = this.contentResolver
// Fragmentから取得
val contentResolver = requireContext().contentResolver
File -> ByteArray
保存するファイルは取得する際に大抵URIかFILEだと思うので、保存形式のByteArrayのに変換する方法も載せておきます。下記記事にまとまっているのでurlだけ笑
参考記事
Discussion