Передача данных для просмотра через сервис доступности - Android
Я хочу изменить текст внутри 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 - нет.
1 ответ
Решение
Я решил мою проблему с потоком таймера. Это мне помогло, потому что служба доступности работает на разных устройствах с некоторой "задержкой".