你如何在adb shell的URL中加入&符号?

And*_*rry 30 android adb

运用

$ adb shell am start some://url
Run Code Online (Sandbox Code Playgroud)

我可以使用活动管理器启动URL.但是,如果我包含多个URL参数,则除了第一个参数之外的所有参数都会被删除.

例:

$ adb shell am start http://www.example.com?param1=1&param2=2
Run Code Online (Sandbox Code Playgroud)

返回:

$ Starting: Intent { act=android.intent.action.VIEW dat=http://www.example.com?param1=1 }
Run Code Online (Sandbox Code Playgroud)

并且在&符号被忽略之后,param2就会消失.我想知道是否有一些编码/转义字符,以防止这种情况.

Ofi*_*zon 43

使用转义字符\:

$ adb shell am start "http://www.example.com?param1=1\&param2=2"
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,对于平台工具版本21,存在一个错误,即在您逃脱它之后,URL将在第一个&符之后被截断.请参阅此问题https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=76026 (8认同)
  • 解决方法是发送:`$ adb shell am start"http://www.example.com?param1=1%26param2=2"` (3认同)

Kub*_*tny 8

以下格式似乎有效.注意报价格式' ":

$ adb shell am start -d '"http://www.example.com?param1=1&param2=2"'


use*_*170 5

由于您可以在此处跟踪的Android构建工具中的错误,所接受的解决方案无效:https://code.google.com/p/android/issues/detail?id = 76026.解决方法如下:

echo 'am broadcast -a com.android.vending.INSTALL_REFERRER -n <your package>/<broadcast-receiver> --es "referrer" "utm_source=test_source&utm_medium=test_medium&utm_term=test_term&utm_content=test_content&utm_campaign=test_name";exit'|adb shell
Run Code Online (Sandbox Code Playgroud)

要将其集成到gradle中,可以使用commandLine语句

commandLine "bash","-c","echo ..."
Run Code Online (Sandbox Code Playgroud)