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

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

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

2 ответа

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

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

  2. Добавить ACTION_PROCESS_TEXT Фильтр намерений, чтобы пользователь мог выбрать созданное вами действие / запустить ваше приложение. Больше можно найти в этом блоге

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

        <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);
}
Другие вопросы по тегам