6

AccessibilityService正しく機能し、onAccessibilityEvent()各イベントで呼び出されるを作成しました。私がやりたいことはEditText、サービスからブラウザーにデータを入力することです。を使用して、通常のアプリでこれを機能させることができますAccessibilityNodeInfo.ACTION_PASTE。ただし、これは Chrome などのブラウザー内からの s では機能しません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は何とかそれを行うようです:-)

4

0 に答える 0