使用adb shell将文本粘贴到Android模拟器剪贴板中

时间:2011-09-02 12:32:07

标签: android emulation clipboard copy-paste

我需要使用adb shell将文本粘贴到Android模拟器剪贴板中。 试过Android 1.6和2.3.1

我尝试使用adb shell命令:clipboard:[android.text.iclipboard]

“服务调用剪贴板”,其中服务代码分别为1,2和3,分别用于getClipboardText,setClipboardText和hasClipboardText。

service call clipboard 2 s16 thisisinsertedtext 

似乎不起作用 而

service call clipboard 1 

显示剪贴板的内容:

service call clipboard 1
Result: Parcel(
   0x00000000: 00000000 00000001 00000001 00000004 '................'
   0x00000010: 00650074 00740078 00000000          't.e.x.t.....    ')

请告知如何为模拟器剪贴板设置值!

6 个答案:

答案 0 :(得分:6)

使用以下命令。

  

服务电话剪贴板2 i32 1 i32 18 s16 thisisinsertedtext

我认为第一个,“i32 1”是剪贴板中有多少元素。所以,只有一个。 第二是字符串的长度。 上面写的命令显示......

  

结果:包裹(00000000'....')   这通常意味着没问题,没有错误。

所以,我的问题是,有没有办法复制unicode字符串? 我的意思是,多字节字符集,如韩语。 我尝试了很多方法,但失败了。

答案 1 :(得分:5)

从API级别11开始,所有3种方法都被弃用,因此它不适用于ICS
不清楚是否有可能让它与服务呼叫剪贴板一起使用...

static final int    TRANSACTION_getClipboardText 1
static final int    TRANSACTION_hasClipboardText 3
static final int    TRANSACTION_setClipboardText 2

www.androidjavadoc.com/1.0_r1_src/constant-values.html
http://developer.android.com/reference/android/content/ClipboardManager.html
http://developer.android.com/guide/topics/text/copy-paste.html

答案 2 :(得分:1)

  

adb shell service call clipboard 2 i32 1 i32 1 s16“你好吗”

     

结果:包裹(00000000'....')

没关系。

“你好吗”是汉字。

第二个'i32 1'可以是任何整数,也许......

答案 3 :(得分:0)

试试这个:

i32:将整数INT写入发送包裹。

s16:将UTF-16字符串STR写入发送包裹。

答案 4 :(得分:0)

直接使用adb shell命令自API级别11起无效。

Here是一个解决方案。

答案 5 :(得分:0)

有一个开源python脚本可以处理严重的限制:https://github.com/gcb/AdbPaste - 除了长剪贴板文件上传之外它运行得很好,它非常慢(200行文本文件可能需要20分钟)。< / p>

我在GitHub上找到了一个名为clipper的应用程序的代码,它可以使用adb通过广播意图填充剪贴板。我将其增强为从文件中读取,增强代码在此处:https://github.com/RoundSparrow/clipper

构建应用程序,在设备上安装。现在我可以使用ADB命令通过文件填充剪贴板。就像我需要上传的3页脚本的魅力一样。基本上你这样使用:

adb push clipboard_content_file.txt /sdcard/clipboard_content_file.txt
adb shell am broadcast -a clipper.setfile -e filepath \'/sdcard/clipboard_content_file.txt\'

AdbPaste速度更快,无论剪贴板内容的大小如何,都只需要一两秒钟。