0

アクセシビリティ サービス内の EditText 内のテキストを変更したい。私のコードは次のとおりです。

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {

    final AccessibilityNodeInfo source = event.getSource();
if (source != null & event.getClassName().equals("android.widget.EditText")) {
       AccessibilityNodeInfo currentSource = source;

        ClipboardManager clipboard = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE);
        ClipData clip = ClipData.newPlainText("label", "TestData");
        clipboard.setPrimaryClip(clip);
        currentSource.performAction(AccessibilityNodeInfo.ACTION_PASTE);

そして、それはうまく機能します。ユーザーが EditText を押すと、「TestData」に変わります。その後、ボタン付きのダイアログが表示されます。そして、ボタンを押してテキストを変更したい。

 AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
        builder.setTitle("Test dialog");
        builder.setMessage("Content");
        builder.setPositiveButton("User", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {

                ClipboardManager clipboard = (ClipboardManager) getApplication().getSystemService(Context.CLIPBOARD_SERVICE);
                ClipData clip = ClipData.newPlainText("label", "Test Username");
                clipboard.setPrimaryClip(clip);
                currentSource.performAction(AccessibilityNodeInfo.ACTION_PASTE);
                dialog.dismiss();
            }
        });

ボタンを押すとクリップボードは更新されますが、EditText 内のテキストは更新されません。

4

1 に答える 1

1

タイマースレッドの問題を解決しました。アクセシビリティサービスはさまざまなデバイスで「遅延」が発生するため、役に立ちました。

于 2015-03-10T13:04:44.787 に答える