【发布时间】:2019-03-14 07:53:10
【问题描述】:
我正在使用adb shell 命令行在Android Studio 和Emulator 之间进行通信。
我以Bundle extras 开始Activity(例如String、Int ...)
我从adb 命令行发送,没关系。
adb shell am start -W -a android.intent.action.VIEW -d "sheme://host/pathPrefix" --es extra_video "videoKey=xxx"
现在我正在尝试做同样的事情,但是使用 另一个 Bundle extras(JSON 字符串),
然后,我无法正确以JSON string 格式记录输出。
我不确定我是否准确填写了命令行。
adb shell am start -W -a android.intent.action.VIEW -d "sheme://host/pathPrefix"
--es extra_video "{\"name\":\"abc\",\"place\":\"xyz\"}"
// LOG OUTPUT : data = Bundle[{extra_recommendation_video=name:abc}]
adb shell am start -W -a android.intent.action.VIEW -d "sheme://host/pathPrefix"
--es extra_video "{"name":"abc","place":"xyz"}"
// LOG OUTPUT : data = Bundle[{extra_recommendation_video=name:abc}]
adb shell am start -W -a android.intent.action.VIEW -d "sheme://host/pathPrefix"
--es extra_video "{'name':'abc','place':'xyz'}"
// LOG OUTPUT : data = Bundle[{extra_recommendation_video=name:abc}]
我想获得与输入相同的输出。 (正确的日志输出:data = Bundle[{extra_recommendation_video={"name":"abc","place":"xyz"}])
知道正确JSON string格式填写命令行的人,请详细告诉我,
谢谢,
p/s : 下面的代码是正确的,问题只是来自命令行的input。
Manifest.xml
<activity
android:name=".MainActivity"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<!--scheme://host/pathPrefix-->
<data
android:host="host"
android:pathPrefix="/pathPrefix"
android:scheme="scheme" />
</intent-filter>
</activity>
MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(contentView);
if (getIntent() != null) {
Video video = null;
if (getIntent().getExtras() != null) {
String data = getIntent().getExtras().getString(EXTRA_VIDEO);
// LOG OUTPUT HERE IS WRONG FORMAT, NOT IS JSON STRING FORMAT
Log.d(LogcatConstants.LIFE_CYCLE, " data = " + data);
video = TVApp.GSON.fromJson(data, Video.class);
}
if (video != null) {
Intent i = new Intent(this, VideoActivity.class);
i.putExtra(VideoPlayerActivity.EXTRA_VIDEO, gson.toJson(video));
startActivity(i);
}
}
}
【问题讨论】:
标签: android shell command-line adb