我创建了一个正常工作的AccessibilityService
,并在每个事件上调用onAccessibilityEvent()
。我想要做的是从我的服务中填充浏览器中的EditText
。我可以使用AccessibilityNodeInfo.ACTION_PASTE
在普通应用中使用它。但是,这不适用于浏览器(如Chrome)中的EditText
,即使它们似乎检测到相同。
以下是我设置服务的方式:
protected void onServiceConnected() {
super.onServiceConnected();
Log.v(TAG, "onServiceConnected");
_("CONNECTED");
toast("service connected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT |
AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS |
AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY |
AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS |
AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
setServiceInfo(info);
}
我如何处理事件:
@Override
public void onAccessibilityEvent(final AccessibilityEvent event) {
_("//////////////////onAccessibilityEvent");
final AccessibilityNodeInfo source = event.getSource();
if (source == null) {
return;
}
AccessibilityNodeInfo source = event.getSource();
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "MyData");
clipboard.setPrimaryClip(clip);
source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
}
我已使用以下命令在清单中的xml文件中定义了更多选项:
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data android:name="android.accessibilityservice" android:resource="@xml/access" />
这一切似乎与Chrome中的EditText
分开..没有出现任何其他选项? LastPass似乎以某种方式做到了: - )