java - 通过辅助服务传递数据以查看 – Android

标签 java android accessibility accessibilityservice accessibility-api

我想在辅助功能服务中更改 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 内的文本不会刷新。

最佳答案

我已经解决了计时器线程的问题。它对我很有帮助,因为辅助功能服务在不同的设备上运行,但有一些“延迟”。

关于java - 通过辅助服务传递数据以查看 – Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903593/

相关文章:

Android表格列宽50/50

android - 'adb devices' 表示在 TWRP 中未经授权

android - Android Content Provider 权限定义是否违反了 DRY 规则?

javascript - 如何确保通过 ajax 加载的表上的逻辑选项卡顺序

java - 运行 Java Web 应用程序时出现 SQLException

java - 链接 Map Reduce 作业时出错

php - 客户端处理与服务器端处理,哪个快?

javascript - OnClick 和 OnKeyPress 符合标准

java - 未显示所有值

java - Android 低功耗蓝牙