web-dev-qa-db-ja.com

adbを使用してファイルをAndroidディレクトリに)コピーする方法

AndroidデバイスをPCに接続すると、ファイルとディレクトリを参照できます。Environment.getExternalStorage()を使用してこのディレクトリを取得できます。アプリケーションから使用して、アクセス可能なファイルを作成できますそれは正常に動作します。

私のデバイスでは、このパスは/storage/emulated/0のように見え、このディレクトリにadb Pushを試すと、アクセス拒否エラーが発生します。 adbを使用して、Windowsエクスプローラーと同じフォルダーにファイルをコピーすることはできますか?

D:\...\tools>adb Push ACCOUNTS.DB /storage/emulated/0
failed to copy 'ACCOUNTS.DB' to '/storage/emulated/0': Permission denied
58969 KB/s (606505 bytes in 0.010s)

自動インポート/エクスポートを実装しています。何か問題が発生した場合に備えて、adb Shellなしでファイルにアクセスできるようにしたいと思います。

現在、variable$EXTERNAL_STORAGEを回避策として使用していますが、adbとアプリケーションの両方で機能します。

デバイス:Asus Fonepad 7、Android 5.0、試してみたGenymotionカスタムタブレット6.0-動作します。

18
kemsky

_/sdcard/_を使用してみてください。 codeでこれを行うことは強くお勧めしませんが。 adbを使用する唯一の方法のようです:

_$ adb Push somefile /storage/emulated/0/somefile
[100%] /storage/emulated/0/somefile
adb: error: failed to copy 'somefile' to '/storage/emulated/0/somefile': Read-only file system

$ adb Push somefile /sdcard/somefile
[100%] /sdcard/somefile
_

ちなみに、私のデバイスではこれらの値は同じではありません。Environment.getExternalStorage()は_/storage/emulated/0/_を指しますが、_/sdcard_は_/storage/emulated/legacy_を指します。

6
bwt

それはかなり簡単です、ルート化されていないデバイスでは内部ストレージを利用できません。 bwt answer で述べたように、データをsdcardにプッシュする必要があります:

adb Push somefile /sdcard/somefile

ファイルシステムからファイルを取得すると、いくつかの問題も発生します。ただし、デバッグアプリケーションからデータベースをプルする場合は、chmodを使用してファイルの権限を変更するだけです。ここに便利なリンクがあります- XDA guys about adb

2
Yurii Tsap