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

Android-如何将File.txt内容粘贴到adb Shell中,android,shell,adb,copy-paste,Android,Shell,Adb,Copy Paste,我正在写一个小代码,在whatsapp中搜索一个号码并发送一条短信 如果我输入脚本本身,我可以发送文本消息,但我想从文件中粘贴消息 是否有任何方法可以使用adb shell input text命令从文件复制内容,而不是从操作系统复制内容 下面是我的代码 adb shell input keyevent 82 adb shell am force-stop com.whatsapp adb shell am start -n com.whatsapp/.Main adb shell inp

我正在写一个小代码,在whatsapp中搜索一个号码并发送一条短信

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

是否有任何方法可以使用adb shell input text命令从文件复制内容,而不是从操作系统复制内容

下面是我的代码

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
谢谢


迪帕克是的,你确实可以做到。当你检查剪贴板时,它看起来有点笨拙,但它工作得很好

首先,您可以使用adb外壳程序中的service call clipboard 1检查当前剪贴板内容(或者,在不首先进行外壳处理的情况下,使用adb外壳程序service call clipboard 1检查当前剪贴板内容)。重新启动后,它最初可能为空,例如:

服务调用剪贴板1 您可以使用service call clipboard 2将文本放入剪贴板,它基本上包含3个参数-两个整数和要放入剪贴板的字符串:

# service call clipboard 2 i32 1 i32 0 s16 "Hi there"
Result: Parcel(00000000    '....')
老实说,我不确定前两个参数是什么。关于堆栈溢出的一个答案表明,第一个int是“包裹中的项目数”(本例中为一个),第二个int是字符串的长度。但是,我使用了0作为第二个参数,它工作得很好,我找不到任何与这个特定函数匹配的文档……因此,请看它的价值

在任何情况下,它基本上是创建一个包含3个字段的地块对象,然后将其传递到剪贴板。然后,剪贴板将打开包裹,并将传入的字符串值设置为剪贴板的内容。您可以在以后检索值时看到这一点:

# 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)


参考资料:

您不能说您使用的是哪种脚本语言。 可以从本机二进制文件(用C/C++编写)执行此操作

1.打开文件进行读取。 2.环 3.把一行读成一个字符串。 4.将所有特殊字符转换为转义字符串 5.使用命令系统发送文本: 系统(“输入”文本Hello%sWorld”); 6.环路 我写了一个叫做inputer的二进制文件。粘贴到其中效果很好,但是
每一行都是fork/exec'd,因此大文件可能会出现问题,您需要测试每一行是否已完成或作为一个大调用发送。

如何使用代码长按发送事件。如果它突出显示“粘贴”按钮,则如何使用代码再次选择它。。
# 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                   '........        ')
#
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