AccessibilityNodeInfo-发送文本 [英] AccessibilityNodeInfo - send text

查看:348
本文介绍了AccessibilityNodeInfo-发送文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个Android应用程序,在这里我必须将文本发送到其他应用程序的重点 EditText 字段.

I am developing an Android app, where I have to send text to focused EditText field of other Applications.

我已经使用 AccessibilityService API级别18 及更高版本中完成了此操作,当我找到 EditText 时,便从ClipBoard中粘贴了数据.这是代码,

I have done it in API level 18 and above using AccessibilityService, when I find the EditText, I paste the data from ClipBoard. Here is the code,

public class TestService extends AccessibilityService {

  @Override
  public void onAccessibilityEvent(AccessibilityEvent event) {
        AccessibilityNodeInfo source = event.getSource();
        if (source != null && event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED && event.getClassName().equals("android.widget.EditText")) {
                ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
                ClipData clip = ClipData.newPlainText("label", "TEST DATA");
                clipboard.setPrimaryClip(clip);
                source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
        }
   }
}

但是,API级别18和更高版本中提供了 AccessibilityNodeInfo.ACTION_PASTE .

But, AccessibilityNodeInfo.ACTION_PASTE is available in API level 18 and above.

我们可以在API级别<中实现相同吗?18吗?

Can we achieve the same in API Level < 18 ?

我在一些博客中读到,可以使用 InputMethodService 完成此操作,在此我们创建自己的键盘并通过该软键盘发送文本.我不太了解...

I read in some blogs that it can be done using InputMethodService, where we create our own keyboard and send text via that soft keyboard. I did not understand much of it...

有人可以帮我吗?

推荐答案

您可以使用API​​ 14中的ACTION_PASTE,但必须像下面那样调用 AccessibilityRecordCompat AccessibilityNodeInfoCompat :

You can use ACTION_PASTE from API 14, but you have to call AccessibilityRecordCompat and AccessibilityNodeInfoCompat like there:

AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
AccessibilityNodeInfoCompat source = record.getSource();
source.performAction(AccessibilityNodeInfo.ACTION_PASTE);

这篇关于AccessibilityNodeInfo-发送文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆