SDカードのパスは、どこだ・・・
Androidの開発において、SDカードの保存パスを取得する際、
Environment.getExternalStorageDirectory()
を使用していたと思います。
が、Android4.2(JellyBean)あたりから内部ストレージの仮想パスに切り替わったようです。
では、SDカードのパスを取得するにはどうすれば良いのか・・・
SDカードのパスの確認方法(その1)
/system/etc/vold.fstab
というファイルがあります。
これは、Androidが起動した際にファイルシステムをマウントする等、
デバイスファイルやマウントポイントを設定するための設定ファイルです。
この中身を見てみると下記のような記述があります。
【スマホ】
/storage/sdcard1
がSDカードのパスのようです。
実際に確認してみましょう。
ちゃんと存在しており、SDカードの中身でした。
ただし、機種によってSDカードのパスは変わってきますので要注意です。
【タブレット】
/storage/sdcard_ext
がSDカードのパスのようです。
スマホと同様に確認してみましょう。
なんと、そんな場所ないよ!と怒られてしまいました。
では、どこにあるのでしょうか・・・
SDカードのパスの確認方法(その2)
現時点で実際にマウントされているパスを確認するには、
/proc/mounts
というファイルを確認する必要があります。
中身を確認してみましょう。
【タブレット】
ちゃんと存在しており、SDカードの中身でした。
これもスマホと同様に、機種によってSDカードのパスは変わってきますので要注意です。
また、タブレットと同様にスマホにも/proc/mounts
は存在します。
※fuse:Filesystem in Userspace
の略のようです
結論
SDカードのパスは、/system/etc/vold.fstab
と/proc/mounts
の
両方を確認し、取得するしかなさそうです。
以前のようにAndroidがAPIを提供してくれるまでは、自身で実装するしかないようです・・・(´Д`。)グスン