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

本文介绍了如何使用adb shell命令将文本粘贴到Android模拟器的剪贴板中,包括尝试不同服务调用剪贴板的命令以及遇到的问题。针对API级别11以上的情况,提供了解决方案,包括使用开源脚本AdbPaste和修改后的clipper应用,以处理长文本或文件的粘贴需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我需要使用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 'text.... ')

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

使用以下命令。

服务呼叫剪贴板2 i32 1 i32 18 s16 thisisinsertedtext

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

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

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

看起来自API级别11以来,所有3种旧方法都被弃用,因此它不适用于ICS

不清楚是否甚至可以让它与服务调用剪贴板一起工作……

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

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

结果:包裹(00000000’….’)

那没问题。

“你好吗”是汉字。

第二个’i32 1’可以是任何整数,也许……

尝试这个:

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

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

从API级别11开始,直接使用adb shell命令不起作用。

这是一个解决方案。

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

我在GitHub上find了一个名为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,无论剪贴板内容的大小如何,它只需要一两秒钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值