Android Page

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

Posted 12月 16 2014 by 別納 義康  , ,

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を提供してくれるまでは、自身で実装するしかないようです・・・(´Д`。)グスン


Android



  未経験OKの仕事 |  上場企業の仕事 |  高待遇の仕事 |  外資系の仕事 |  社内SEで検索 |  自社サービスで検索





メールアドレス
ご質問・問い合わせ等、ご自由にお書きください。