【Android】SDカードの保存パスについて

この記事は2014年12月16日に書かれたものです。内容が古い可能性がありますのでご注意ください。


SDカードのパスは、どこだ・・・

Androidの開発において、SDカードの保存パスを取得する際、
Environment.getExternalStorageDirectory()を使用していたと思います。
が、Android4.2(JellyBean)あたりから内部ストレージの仮想パスに切り替わったようです。

では、SDカードのパスを取得するにはどうすれば良いのか・・・

SDカードのパスの確認方法(その1)

/system/etc/vold.fstabというファイルがあります。
これは、Androidが起動した際にファイルシステムをマウントする等、
デバイスファイルやマウントポイントを設定するための設定ファイルです。

この中身を見てみると下記のような記述があります。
【スマホ】
10_smartPhone_fstab
/storage/sdcard1がSDカードのパスのようです。
実際に確認してみましょう。
11_smartPhone_fstab_check
ちゃんと存在しており、SDカードの中身でした。
ただし、機種によってSDカードのパスは変わってきますので要注意です。

【タブレット】
20_tablet_fstab
/storage/sdcard_extがSDカードのパスのようです。
スマホと同様に確認してみましょう。
21_tablet_fstab_check
なんと、そんな場所ないよ!と怒られてしまいました。
では、どこにあるのでしょうか・・・

SDカードのパスの確認方法(その2)

現時点で実際にマウントされているパスを確認するには、
/proc/mountsというファイルを確認する必要があります。
中身を確認してみましょう。

【タブレット】
23_tablet_mounts_check
ちゃんと存在しており、SDカードの中身でした。
これもスマホと同様に、機種によってSDカードのパスは変わってきますので要注意です。
また、タブレットと同様にスマホにも/proc/mountsは存在します。
※fuse:Filesystem in Userspaceの略のようです

結論

SDカードのパスは、/system/etc/vold.fstab/proc/mounts
両方を確認し、取得するしかなさそうです。
以前のようにAndroidがAPIを提供してくれるまでは、自身で実装するしかないようです・・・(´Д`。)グスン

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

PAGE TOP