8

私はEditText他のアプリケーションのフォーカスされたフィールドにテキストを送信する必要がある Android アプリを開発しています。

API level 18使用して上記で実行しました。 がAccessibilityService見つかっEditTextたら、クリップボードからデータを貼り付けます。ここにコードがあります、

public class TestService extends AccessibilityService {

  @Override
  public void onAccessibilityEvent(AccessibilityEvent event) {
        AccessibilityNodeInfo source = event.getSource();
        if (source != null && event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED && event.getClassName().equals("android.widget.EditText")) {
                ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
                ClipData clip = ClipData.newPlainText("label", "TEST DATA");
                clipboard.setPrimaryClip(clip);
                source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
        }
   }
}

ただし、AccessibilityNodeInfo.ACTION_PASTEAPI レベル 18 以降で使用できます。

API レベル < 18 で同じことを達成できますか?

InputMethodService独自のキーボードを作成し、そのソフト キーボードを介してテキストを送信する を使用して実行できることをいくつかのブログで読みました。あまり意味が分かりませんでした…

誰かがこれについて私を助けることができます。

4

3 に答える 3

0

はい、API 14 以降でも AccessibilityNodeInfo を使用できますが、ACTION_PASTE は Api レベル 18 からのみ使用する必要があります。http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html をご覧ください

于 2014-04-28T08:23:49.303 に答える
0

現在フォーカスがあるビューを取得できます。

public View getCurrentFocus() {
    return mWindow != null ? mWindow.getCurrentFocus() : null;
}

そして、テキストを設定します:

editTextObject.setText(CharSequence)
于 2014-04-25T13:16:43.283 に答える