私は、adbによってデバイスsdcardからファイル(Android app)によって保存された)をプルするアプリケーションを作成しています。問題は、デバイスごとにさまざまなsdcardディレクトリがあることです
すなわち:
まず、私は次のソリューションを発明しました:
しかし問題は、2つのサムスンデバイス_GT-I9100
_と_GT-I9000
_があり、両方ともディレクトリ_sdcard/external_sd
_を持っていることです。 System.getenv("EXTERNAL_STORAGE")
をチェックすると、1つはsdcard
を返し、もう1つは_sdcard/external_sd
_を返します。以前にSystem.getenv("EXTERNAL_STORAGE")
に保存されたファイルをプルする必要があります。
だから質問は次のとおりです:Androidコードにアクセスせずに、adbから直接sdcardディレクトリを取得するコマンドはありますか?
または、adbのam startでアクティビティを開始し、戻り値を取得できますか?これは可能ですか?
編集:解決策を見つけました:
_adb Shell echo $EXTERNAL_STORAGE
_
私があなたを誤解していないなら、あなたは次のようなものを探しています:
emanuele@Nabucodonosor:~$ adb Shell cd \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb Shell ls \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb Shell echo \$EXTERNAL_STORAGE
その価値-$ EXTERNAL_STORAGE変数を使用すると、誤解を招く結果が得られる可能性があります。ここにはHP Slateタブレットがあり、EXTERNAL_STORAGE変数が/ storage/sdcard0に設定されています。ただし、シェルでdf(ディスク空き)コマンドを使用する場合、またはマウントコマンドを使用して空き領域またはマウントを表示する場合、次のことが明らかになります。
Shell@Android:/ $ df
Filesystem Size Used Free Blksize
/dev 452.7M 36.0K 452.7M 4096
/mnt/asec 452.7M 0.0 K 452.7M 4096
/mnt/obb 452.7M 0.0 K 452.7M 4096
/system 629.9M 468.5M 161.5M 4096
/data 5.7 G 2.3 G 3.5 G 4096
/cache 435.9M 16.4M 419.5M 4096
/storage/sdcard0 5.7 G 2.3 G 3.5 G 4096
/mnt/external_sd 29.3G 64.0K 29.3G 32768
そのため、外部SDカードは、実際にはEXTERNAL_STORAGEが返す値(内部ストレージ)ではなく、/ mnt/external_sdです。
System.getenv("EXTERNAL_STORAGE")
の代わりに getExternalStorageDirectory() を使用することをお勧めします。これにより、デバイスに関係なく外部ストレージディレクトリが提供されます。