gpt4 book ai didi

android - 三星设备和辅助功能服务(ACTION_PASTE、剪贴板)

转载 作者:太空狗 更新时间:2023-10-29 13:21:13 25 4
gpt4 key购买 nike

我尝试在第三方应用程序中实现自动登录功能。

我尝试在登录页面复制并粘贴用户名/密码。为了实现它,我使用了 Android 无障碍服务。

我可以在不同的设备上粘贴文本。但在三星设备上,用户名/密码粘贴在错误的输入字段中。

日志显示用户名/密码正在按预期复制。但是在粘贴时粘贴了错误的文本。

这是我的做法:

private ClipboardManager mClipboardManager;
mClipboardManager = (ClipboardManager) getApplication().getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);

ClipData clip = ClipData.newPlainText("", textToPaste);
mClipboardManager.setPrimaryClip(clip);
nodeInfo.performAction(AccessibilityNodeInfo.ACTION_PASTE);
clip = ClipData.newPlainText("", "");
mClipboardManager.setPrimaryClip(clip);

clip = ClipData.newPlainText("", textToPaste2);
mClipboardManager.setPrimaryClip(clip);
nodeInfo.performAction(AccessibilityNodeInfo.ACTION_PASTE);
clip = ClipData.newPlainText("", "");
mClipboardManager.setPrimaryClip(clip);

你能帮我找到解决方案吗?如何粘贴正确的文本?

最佳答案

我也有这个问题,我注意到这是一个悬而未决的问题 here也没有得到妥善解决。这个问题似乎是三星自己的剪贴板的竞争条件,以及他们如何实现辅助功能来处理它。我有一个功能正常但不太漂亮的解决方案:

if (Build.MANUFACTURER.toString().equals("samsung")) {
Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
getCurrentNode().performAction(AccessibilityNodeInfo.ACTION_PASTE);
}
};
handler.postDelayed(runnable, 100);
} else {
getCurrentNode().performAction(AccessibilityNodeInfo.ACTION_PASTE);
}

所以基本上我们在粘贴之前等待剪贴板稳定下来(100 毫秒,YMMV)。我承认这并不完美,但这适用于 API 18+。

API 21+ 的另一个选项是使用 AccessibilityNodeInfo.ACTION_SET_TEXT 而不是粘贴(显然仅用于文本),并以这种方式插入正确的文本 fragment 。以下是其工作原理的示例:

Bundle arguments = new Bundle();
arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "node text plus pasted text");
getCurrentNode().performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);

注意:上面没有管理光标,所以总是把它放在文本字段的末尾。您可以使用 AccessibilityNodeInfo.ACTION_SET_CURSOR 和 bundle 管理光标(与上面设置文本的方式类似)

关于android - 三星设备和辅助功能服务(ACTION_PASTE、剪贴板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com