が用意されています。
マウント状態の中にはSDカードが読み取り専用であった場合に返される
MEDIA_MOUNTED_READ_ONLYがあります。
参考:Android Developer
SDがリードオンリーであることは通常ありません。
しかし、非常に稀ですがメカニカルライトプロテクトスイッチを備えたSDカード
(SDカード自体にスイッチがあり、これをONにすることで読み取り専用とするもの)
や、ソフトウェアのバイナリをSDで提供しているようなケースでも読み取り専用
として提供されます。
読み取り専用のSDカードは入手するのが困難です。
ここではadb shellのコマンドを使用してSDを読み取り専用としてマウントす
る方法を紹介します。
まずはmountコマンドを使用して/mnt/sdcardの状態を調べます。
# mount
複数の結果が返されると思いますが、SDカードにあたる項目を探してください。
手元の環境では下記が取得できました。
(以降はこの値をもとにコマンドを指定していきます)
/dev/block/vold/179:0 /mnt/sdcard vfat rw,
この値は後で指定する際に使用するので覚えておきます。
次にSDカードをアンマウントします。
# umount /mnt/sdcard
これでSDカードのマウントが解除されます。
(Galaxy Nexusのような内蔵SD型の場合はアンマウントできないかも...)
次にSDカードをリードオンリー(ro)として再マウントします。
先ほど取得した値を参考に下記コマンドを発行します。
# mount -t vfat -o ro /dev/block/vold/179:0 /mnt/sdcard
vfatはファイルシステムタイプ、-oはオプション指定でリードオンリー(ro)
を指定します。
続いてdeviceを指定し、最後にパスを指定します。
これで再度mountコマンドを発行すると下記の結果が得られると思います。
/dev/block/vold/179:0 /mnt/sdcard vfat ro,
SDカードがリードオンリーになっていることがわかります。
この状態で動作確認することでSDがリードオンリー状態で試験することが可能です。
なお、この方法ではメディアMOUNTに関するブロードキャストは通知されません。
MOUNTブロードキャストを試験したい場合はam broadcastを使用して自分で発行
するなどの工夫が必要です。
以上です。