2013年1月28日月曜日

AndroidではとりあえずExternalStoragePublicDirectoryにファイル保存しとけば大丈夫?

Androidのダウンロードマネージャで画像をダウンロードする時の保存先の話。

例えば、このようにしてギャラリーなどで開けるようにパブリックな領域に保存するパスを得るとする。
String basePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath();


ここで「ExternalStorage」というところが気になって・・・具体的にはどういったファイルパスに保存するのか?

例えば、Nexus7などは外部記憶、つまりSDカードを差す場所など元から無いわけで。この場合は?

/storage/emulated/0/Pictures/

なるほど。外部記憶を内部的にエミュレートして、結局、内部記憶に保存するのね。


逆に例えば、Galaxy TabなどはSDカードを挿す場所があるけど、挿してる場合と挿してない場合ではどう変わるのか?

SDカードあり
/mnt/sdcard/Pictures/

SDカードなし
/mnt/sdcard/Pictures/

つまり、SDカードを挿していようと挿していまいと同じパスに保存することになってた。

ちなみにSDカードを挿すと

/mnt/sdcard/external_sd

にSDカードがマウントされた。sdcardの配下に外部SDカードをマウントするという(^^);


というわけで、AndroidではとりあえずExternalStoragePublicDirectoryにファイル保存しとけば大丈夫そうだ。