[Android] 外部ストレージにファイルを保存する WRITE_EXTERNAL_STORAGE

こちらでアプリ内にファイルを保存の方法を試しましたが、共用メモリの外部ストレージに保存することもできます。ここは例えばカメラの画像など、あるいはSDカードなどのある程度大きいファイルをたくさん保存するような領域です。
 
文字列をファイルに入れて外部ストレージに保存して、読み出す例です。
 

Android Studio 2.2.2
Android 7.1.1

 

sponsored link

EXTERNAL_STORAGE

 
WRITE_EXTERNAL_STORAGE と READ_EXTERNAL_STORAG はdangerous permissionなので、permission checkの実装が必要になります。ただし、この2つは同じグループなのでWRITE_EXTERNAL_STORAGEのチェックのみで済みます。
 
マニフェストへの設定です。
AndroidManifest.xml

 
外部ストレージでユーザーが保存できる場所は
Environment.getExternalStorageDirectory()
によって取得できます。
端末によってファイルシステムは多少異なるため、決め打ちのパスでは問題が起こります。
 
MainActivity.java

 
isExternalStorageWritable()
これは、パーミッションとは別に、現在ストレージ領域を他の何かが処理をしていてアクセスすべきでない場合かどうかを確認しているものです。
isExternalStorageReadable()も同様です

activity_main.xml

 
実際に端末内のファイルとして保存されているか確認してみます
terminalでadb shellで入ってから、Logで保存先のpathを表示させているので、それを入れます

 
確かに、testfile.txtがストレージに作成されています。

Ref:
ファイルを保存する