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

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

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

Ответы [ 2 ]

0 голосов
/ 27 января 2018

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

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

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

0 голосов
/ 10 мая 2011

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

        <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);
}
...