AccessibilityNodeInfo-发送文本 [英] AccessibilityNodeInfo - send text
问题描述
我正在开发一个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屋!