Android - 如何将File.txt内容粘贴到adb Shell中

时间:2015-01-03 14:09:02

标签: android shell adb copy-paste

我正在编写一个小代码来搜索whatsapp中的数字并发送短信。

如果我输入脚本本身,我可以发送短信,但我想从文件中粘贴消息。

有没有办法使用adb shell input text命令从文件而不是os复制内容。

我的代码如下。

adb shell input keyevent 82

adb shell am force-stop com.whatsapp

adb shell am start -n com.whatsapp/.Main

adb shell input text "9800000000"

adb shell input keyevent 66

adb shell input text 'This%sis%sa%stest%smessage'

adb shell input keyevent 66

adb shell input text 'I%sam%schecking%slots%sof%sthings'

adb shell input keyevent 61

adb shell input keyevent 61

adb shell input keyevent 66

adb shell am force-stop com.whatsapp

谢谢,

迪帕克

2 个答案:

答案 0 :(得分:0)

您没有说出您使用的是哪种脚本语言。 您可以使用Native二进制文件(用C / C ++编写)。

 1. Open the file for reading.
 2. LOOP
 3. Read a line into a string.
 4. convert all special characters to escape strings
 5. Use the command system to send the text:
     system("input "text Hello%sWorld");
 6. LOOP

我写了一个叫做inputer的二进制文件。粘贴到它的工作得很好,但是 每一行都是fork / exec'd所以大文件可能会出现故障,你需要测试每一行完成或发送一个巨大的电话。

答案 1 :(得分:-1)

是的,你实际上可以做到这一点。

,当你检查剪贴板时,它看起来很奇怪

首先,您可以使用服务调用剪贴板1从adb shell检查当前剪贴板内容(或者,首先不进行shelling,adb shell服务调用剪贴板1)。它可能在重新启动后最初开始为空白,例如:

服务电话剪贴板1

Result: Parcel(
  0x00000000: 00000000 00000001 00000000 00000000 '................'
  0x00000010: 00000000 00000000                   '........        ')
#

你可以使用服务调用剪贴板2将文本放入剪贴板,它基本上需要3个参数 - 两个整数和你想放在剪贴板上的字符串:

# service call clipboard 2 i32 1 i32 0 s16 "Hi there"
Result: Parcel(00000000    '....')

说实话,我不确定前两个参数是什么。 Stack Overflow上的一个答案表明,第一个int是"包裹中的项目数量#34; (在这种情况下为一个),第二个是字符串的长度。但是,我已经使用0作为第二个参数并且它工作正常,我找不到与此特定功能相匹配的任何文档......所以请考虑它的价值。

在任何情况下,它基本上都会创建一个包含3个字段的Parcel对象,然后将其传递到剪贴板。然后剪贴板解包Parcel并将传入的字符串值设置为剪贴板的内容。当你去后检索值时,你可以看到这个:

# service call clipboard 1
Result: Parcel(
  0x00000000: 00000000 00000001 00000000 00000008 '................'
  0x00000010: 00690048 00740020 00650068 00650072 'H.i. .t.h.e.r.e.'
  0x00000020: 00000000 00000000                   '........        ')
#

同样,如果您长按文字输入字段并点击"粘贴"执行此操作后,您将获得通过上面的呼叫服务剪贴板2行设置的文本(它看起来完全正常)。

(以上示例来自我的HTC EVO,运行CyanogenMod 7)

参考:https://android.stackexchange.com/questions/19710/is-it-possible-to-write-to-a-devices-clipboard-using-adb