読者です 読者をやめる 読者になる 読者になる

Context.openFileOutput

ファイルへの書き込みは、openFileOutputでファイルストリームを取得し、JavaのFileOutputStreamなどで書き込んでいく・・・。

Context | Android Developers

openFileOutputは、Contextクラスのメソッドだが、ActivityはContextを継承しているのでそのまま使える・・・。

activity_main.xmlに、

EditTextを2つ配置・・・。
上にはテキストファイル名、下にテキストファイル本文を書く・・・。ちょっとした簡易メモ・・・。
下の本文は、android:inputType="textMultiLine"で複数行入力可能に・・・。
デフォルトだと、真ん中にキャレットがいるので、android:gravity="top"でキャレットを左上に・・・。

main.xmlのメニューは、

このようにして、

Write fileというアイテムのみ・・・。
これが選択されたら、ファイルを書き込む・・・。

MainActivity.javaでは、

Write fileが選択されたら、ファイル名と本文をEditTextから取得・・・。
filenameが空でなかったら、openFileOutputでFileOutputStreamを取得・・・。
そこにfilecontentを書き込む・・・。

f:id:BG1:20160621154905p:plain

このWrite fileを選択すると、書き込まれる・・・。

このローカルファイルは、"/data/data/<パッケージ名>/files/"の下に書き込まれるが、普通は権限が無いので見ることができない・・・。
今回は、run-asコマンドというのを使って、一時的にアプリユーザ権限になって、ファイルを参照する・・・。

[Android] adb, run-as コマンドでローカルストレージ内をのぞく

>adb shell
shell@C5303:/ $ run-as com.bgstation0.android.sample.context_
shell@C5303:/data/data/com.bgstation0.android.sample.context_ $ ls
cache
files
lib
shell@C5303:/data/data/com.bgstation0.android.sample.context_ $ cd files
shell@C5303:/data/data/com.bgstation0.android.sample.context_/files $ ls
test1.txt
ENDshell@C5303:/data/data/com.bgstation0.android.sample.context_/files $ cat test1.txt
ABCDE
XYZ
ENDshell@C5303:/data/data/com.bgstation0.android.sample.context_/files $

確かにtest1.txtにABCDE, XYZ, ENDが書き込まれてる・・・。

Sample/android/Context/openFileOutput/src/Context/Context_ at master · bg1bgst333/Sample · GitHub