2016-08-25 12 views
2

アプリの実行中にファイルを生成したいので、自分のパソコンが自分のアプリのステータスを時間内に監視できます(携帯電話は常にusb経由で接続されています)。Android getExternalStorageDirectoryフォルダをadbで取得する方法は?

adbとappの両方に同じディレクトリを指すようにするにはどうしますか?

また、アンドロイドがコンピュータと通信できる別の方法がある場合は、教えてください。私が試した


方法:

を最初に、私はしかし

echo $EXTERNAL_STORAGE 

Environment.getExternalStorageDirectory() 

同じ値を返します。

値のadbシェルが返さ:

/storage/emulated/legacy 

ただし、プログラムでEnvironment.getExternalStorageDirectoryを()の呼び出しの結果は次のとおりです。次に

/storage/emulated/0 

、私が作るアンドロイド実行シェルコマンド

 Process su = Runtime.getRuntime().exec("echo $EXTERNAL_STORAGE"); 
     //also tried "echo \\$EXTERNAL_STORAGE" 
     su.waitFor(); 
     in = su.getInputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     String line = ""; 
     while ((line = reader.readLine())!= null){ 
      result = result + line + "\n"; 
     } 
     reader.close(); 
     in.close(); 
     su.destroy(); 
     return result; 

ただし、空文字を返します。

+0

Android/Windowsの契約では、read/writteの許可が同期していないことを知っておく必要があります。接続が確立された後に作成された「ファイル」は、ルートされたデバイスであってもアクセス可能であってはなりません。同様に、Androidで 'File'を消去しても、Windowsがディレクトリを消滅させることはありません(ディレクトリはLinuxプラットフォームの' File'sで、Androidはビルドされています)。 – Bonatti

答えて

1

echoは別の実行可能ファイルではなく、shellのビルトインコマンドです。

使用Runtime.getRuntime().exec("sh -c 'echo $EXTERNAL_STORAGE'");代わり

+0

私はRuntime.getRuntime()。exec( "sh -c 'echo $ EXTERNAL_STORAGE'");を試していました。しかし、それも私に空の文字列を返しました。 – Ray

0

は最後に、私は、コマンドを次により値を得ました。

Runtime.getRuntime().exec(new String[] { "sh", "-c", "echo $EXTERNAL_STORAGE" }); 

ありがとうございました。

関連する問題