2017-02-03 12 views
0

私が活動にJSON引数を送信しようとしている、と私は、次のようなコマンドを経由して、そうすることはできませんようにそれはそう:保存JSON相場

adb shell am start -n <activity> -e argument_name '{"blah":"blah"}' 

任意の二重引用符私のアプリがそれらを取得するとJSON文字列の内部が取り除かれます( "blah": "blah"はblah:blahになります)。最初にadbシェルを起動してから、引用符が取り除かれないように起動する必要があります。これはWindows Powershellで発生します。

私はthe solution suggested here by Jerry101 (i.e. custom handling of quotes)を試しましたが、それは役に立ちませんでした。私はPowershellスクリプトからアンドロイドアプリの起動を自動化したいので、まずシェルに入りたくないのです。これは、上の例のように(one-linerとして)シェルにコマンドを起動するadbシェルコマンドを実行することを意味します。

+0

これはLinux用のものではありません。 "\"の代わりにPowershellのエスケープ文字を使用する必要があります – Chisko

+2

[引用符と二重引用符をエスケープする]の重複可能性があります(http://stackoverflow.com/questions/18116186/escaping-quotes-and-double-quotes) – Chisko

+0

'echo 'am start -n -e argument_name' '{"blah": "blah"}' '' | adb shell' –

答えて

1

コメントで指摘されているように、Powershellで文字をエスケープする方法を知る必要があります。

代替があなたのコマンド

# file.sh 
am start -n <activity> -e argument_name '{"blah":"blah"}' 
その後、

実験を通して

adb push file.sh /storage/self/primary/file.sh 
adb shell sh /storage/self/primary/file.sh 
+0

私の場合は、私が持っていた一重引用符の中に別の一重引用符を入れる必要がありました。私も二重引用符をエスケープするためにバックスラッシュを使用する必要がありました。正しいバージョンは次のようになります:am start -n -e argument_name '' '{\ "blah \":\ "blah \"}' '' – luxchar

0

含むファイルを作成することができ、私は私が(最初の単一引用符の内側に別の単一引用符が必要であることを考え出しましたそれぞれの単一引用符はそれらのペアを使用してエスケープする必要があります)。二重引用符は、バックスラッシュ文字を使用してエスケープする必要があります。以下は、動作する例です:

adb shell am start -n <activity> -e argument_name '''{\"blah\":\"blah\"}''' 

これは私の場合に有効です。受信側(これはUnityです)は二重引用符を表示します。