【问题标题】:Sending data from an Android Activity to PC through ADB通过 ADB 将数据从 Android Activity 发送到 PC
【发布时间】:2014-04-18 12:19:29
【问题描述】:

是否可以将数据从 android Activity 发送到 adb ?我想通过 ADB 启动一个活动并传递一些数据,执行一个操作,然后读取结果。 最好的方法是什么?

例如: adb.exe shell am start -n com.example/com.example.Adder --ei operand1 10 --ei operand2 20 这将增加 10 + 20 .. 并存储总数 30。我如何获取该值?

我的研究中的这些建议不是一个选项: 1. 写入文件然后使用 pull 从 adb 读取它 [手机我没有 SD 卡,并且 android 4.3 存在一个错误,这意味着 run-as 命令不起作用] 2. 打开一个socket并通过它发送数据[我不想依赖网络]

更新: 所以我已经能够按照克里斯的建议通过 adb forward 做一些事情。 我首先启动 adb forward: adb forward tcp:10000 tcp:10000;

然后在我的 android 应用程序上.. 我创建一个服务器套接字并阻止 serverSocket.accept(); 然后客户端连接..然后您可以像使用 TCP/IP 套接字一样来回发送数据。

我现在只有一个问题,亚行没有记录;一旦设置了转发,客户端似乎连接到服务器套接字,即使它尚未在 android 端设置。 为什么会这样,是否有可能检测到 serverSocket 尚未设置。一旦我的 clientSocket 连接到这个“影子”套接字??

【问题讨论】:

  • 可以通过 adb 转发而不是网络来使用套接字。使用 unix 域套接字甚至可以避免需要 Internet 权限。使用 adb 转发,手机必须是服务器,而 pc 必须是客户端,但这可以通过在通过 adb 发送启动意图后不久重复尝试连接来满足您的需求。对于一些琐碎的事情,您也可以将其记录下来并从 logcat 中 grep 答案。
  • 您能否详细说明一下。从我的活动中,我可以做到:“ server = new ServerSocket(portNumber); Socket client = server.accept(); PrintWriter pr = new PrintWriter(client.getOutputStream(), true); pr .print(dataToWrite); 怎么会这被转发到adb?如果手机是服务器,那么accept()会在什么时候返回??
  • 阅读亚行文档。
  • ADB 文档在转发方面确实没有多说。那里有两行。但是无论如何,我正在使用节俭..我的计算机上有一个服务器,因此打开一个套接字并进行监听,在我的手机上设置了网桥,活动连接到该套接字,并尝试写入数据。我收到此错误:libcore.io.ErrnoException:连接失败:ECONNREFUSED

标签: android android-activity tcp adb


【解决方案1】:

我有一个已经这样做的代码,请阅读my blog,是西班牙语,但代码是通用语言:D

我通过 JavaScript 使用 webSockets,Android 设备中的 WebSocket 服务器和网页中的 WebSocket 客户端。

Android 设备必须处于 USB 调试模式,并且您必须在 PC 的命令行中执行“adb forward tcp:38300 tcp:38300”来创建允许 WebSocket 连接的“隧道”。

【讨论】:

    【解决方案2】:

    让您的应用程序简单地使用标准 Log 类,并使用 adb logcat 读取输出,过滤您想要捕获的任何内容。

    【讨论】:

    【解决方案3】:

    关于 ADB 转发的文档不多,但我认为 ADB 并没有像您期望的 SSH 会话那样真正地隧道传输流量。它只是盯着 PC 上的 tcp 侦听器和设备上的 tcp 客户端,并从一个发送数据到另一个。缺点是 PC 始终接受转发端口上的连接,即使该端口上没有 Android 应用程序监听。

    【讨论】:

    • 确实,这给我带来了问题。我并没有真正找到解决它的方法,但是我在 TCP/IP 之上使用了 Thrift,并且不必担心打开和关闭套接字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多