[Android] Storage Access Framework でドキュメントを保存する

cat32 01 - [Android] Storage Access Framework でドキュメントを保存する
共有メモリにファイルを保存するためにSAF(Storage Access Framework)を利用します。ファイル保存に使うのは ACTION_CREATE_DOCUMENTです。取り出したい場合は ACTION_OPEN_DOCUMENT を使います。

Android Studio 4.1
API 30



SAF, Storage Access Framework

 
API 19よりSAFを使うことによりコンテンツを容易に参照できるようになりました。

  • ドキュメント ストレージ プロバイダ全体から簡単にドキュメント、画像、その他のファイルを参照して開くことができる
  • 標準の Picker UI により、アプリやプロバイダを通じて一貫性のある方法でファイルにアクセスできる

storage dataflow b - [Android] Storage Access Framework でドキュメントを保存する

図 2. ストレージ アクセス フレームワークのフロー
Ref:ストレージ アクセス フレームワーク

 

 

Intent ACTION_CREATE

 
テキストファイルをSAFを使って保存します。

IntentはACTION_CREATE_DOCUMENT
setTypeでMIMEの設定
EXTRA_TITLEでは名前を設定する時のデフォルト候補。
 

 
onActivityResultでUriが返ってきます。そのUriに出力していきます。

 

サンプルコード

 
テキストファイルに「Storage Access Framework」の文字列を入れてそれを保存してみます。

MainActivity.java

 

activity_main.xml

 
strings.xml

 
実行してボタンをタップすると共有ストレージの「Downloads」に移行して、そこに保存できます。

saf save doc 01 - [Android] Storage Access Framework でドキュメントを保存する

adb を使ってストレージを覗いてみると、text_file.txt が存在します。
また、ファイル内容も想定したものです。

 

画像ファイルの保存

 
SAFを使って「Download」ディレクトリにテキストファイルを保存しましたが、同じように画像を保存することも可能です。
 

 


 
 
関連ページ:
 

asynctask 00b 100x100 - [Android] Storage Access Framework でドキュメントを保存する
データを保存するストレージ領域が目的・用途によって区分されてセキュリティー的に厳しくなりました。 対象範囲別外部ストレージ   S...

 
References:
Storage Access Framework
インテント
ACTION_OPEN_DOCUMENT
ACTION_GET_CONTENT

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加

 

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。




シェアする

  • このエントリーをはてなブックマークに追加

フォローする