Android: как прослушивать события longclick в любой текстовой области в других приложениях?

Я пытаюсь разработать приложение для Android, которое предоставляет дополнительную возможность при вставке данных в любом месте.

Я знаю, как захватить данные из буфера обмена. Мне просто нужно знать, как прослушивать события longclick в любой текстовой области в других приложениях, таких как браузеры, facebook, twitter... и т. д., чтобы мое приложение запускалось, давая пользователю возможность вставить данные в буфер обмена после обработки это, как альтернатива вставке его обычным способом.


person Doaa A.    schedule 10.05.2011    source источник
comment
Хм, я почти уверен, что для этого потребуется модифицированная ОС, я не думаю, что менеджер буфера обмена можно заменить, например, для SMS и тому подобного.   -  person Seth Hikari    schedule 10.05.2011
comment
Хотя это: dylantaylor.wordpress.com/clippy утверждает, что у него есть служба, которая отслеживает буфер обмена на наличие изменения, вы можете сделать то же самое и опубликовать уведомление, которое берет содержимое буфера обмена.   -  person Seth Hikari    schedule 10.05.2011


Ответы (2)


Мы прошли долгий путь с тех пор, как вы задали этот вопрос, но на самом деле есть 2 способа сделать это:

  1. позвоните в ClipboardManager.addPrimaryClipChangedListener() и зарегистрируйтесь в качестве слушателя, когда пользователь копирует текст. можно найти в документации.

  2. Добавьте ACTION_PROCESS_TEXT Intent Filter, чтобы пользователь мог выбрать созданное вами пользовательское действие/запустить приложение. Дополнительную информацию можно найти в этом сообщении блога.

person Roee    schedule 27.01.2018

Вам нужно добавить фильтр намерений к рассматриваемому действию, например:

        <activity android:name=".PostActivity">
            <intent-filter>
              <action android:name="android.intent.action.SEND" />
              <category android:name="android.intent.category.DEFAULT" />
              <data android:mimeType="text/plain" />
            </intent-filter>       
        </activity>

Затем вам просто нужно обработать данные, отправленные вам в намерении в вашей деятельности.

Uri data = getIntent().getData();
Bundle extras = getIntent().getExtras();
String messageText = "";
if (data != null) {
  messageText = data.toString();
} else if (extras != null) {
  messageText = extras.getString(Intent.EXTRA_TEXT);
}
person dmon    schedule 10.05.2011