それが悪い影響を及ぼすかどうか知らんけど、普通に動いてもらわねば。
https://market.android.com/details?id=jp.typepad.hirokuma.EjectSD
うまく動かない。
マウントなどを認識してくれないのだ。
logcatで見ると、アプリは/mnt/sdcardを見ているようだ。
しかしmountで見ると、SDカードは
- /mnt/external_sd
- /mnt/secure/asec
うーむ、巷では聞いたことがあったのだが、自分のところに影響しようとは。
printenvすると、こうなっていた。
SECOND_VOLUME_STORAGE=/mnt/external_sd
EjectSDでは、Environment.getExternalStorageState()でマウント状態を取得している。
パスは、Environment.getExternalStorageDirectory().toString()で取得している。
つまり、getExternalStorageシリーズでは正しく取得できないことになる。
まいったなあ。
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
getExternalFilesDir(null)、でいいのかな? ちょろっと試したいところだが、mmでビルドできる環境じゃないと動かないアプリなのだ。 Context.getExternalFilesDir(null) これは、nullが返ってきた。 W/ApplicationContext( 835): Unable to create external files directory API9だとandroid.os.storage.StorageManagerがあるので、使えるかもしれん。 が、それは使いたくないので、このまま進めよう。 環境変数を見てみる。 String str3 = System.getenv("THIRD_VOLUME_STORAGE"); String str2 = System.getenv("SECOND_VOLUME_STORAGE"); String str1 = System.getenv("EXTERNAL_STORAGE"); String str = Environment.getExternalStorageDirectory().toString(); 結果 D/EjectSD ( 1195): 3 : /mnt/usb_storage D/EjectSD ( 1195): 2 : /mnt/external_sd D/EjectSD ( 1195): 1 : /mnt/sdcard D/EjectSD ( 1195): 0 : /mnt/sdcard 決め手に欠けるので、これはユーザに選んでもらうしかないなぁ。 しかしどうしようもないのは、mount/umountのブロードキャストが飛んできてなさそうなこと。 MountServiceではだめなのかなぁ。 voldやMediaScannerなんかは動いているから、取得する方法はありそうなんだけど。 まだまだ、である。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。