#android #copy-paste #long-click
#Android #копировать-вставить #длинный щелчок
Вопрос:
Я пытаюсь разработать приложение для Android, которое предоставляет дополнительную опцию при вставке данных в любом месте.
Я знаю, как захватывать данные из буфера обмена. Мне просто нужно знать, как прослушивать события longclick в любой текстовой области в других приложениях, таких как браузеры, facebook, Twitter … и т.д., Чтобы мое приложение запускалось, предоставляя пользователю возможность вставить данные в буфер обмена после их обработки, в качестве альтернативы вставке обычным способом.
Комментарии:
1. Хм, я почти уверен, что для этого потребуется модифицированная ОС, я не думаю, что менеджер буфера обмена можно заменить как намерение для SMS и тому подобное.
2. Хотя это: dylantaylor.wordpress.com/clippy утверждает, что у него есть служба, которая отслеживает изменения в буфере обмена, вы могли бы сделать то же самое и опубликовать уведомление, которое принимает содержимое буфера обмена.
Ответ №1:
Мы прошли долгий путь с тех пор, как вы задали этот вопрос, но на самом деле есть 2 способа сделать это:
-
позвоните в to
ClipboardManager.addPrimaryClipChangedListener()
и зарегистрируйтесь в качестве слушателя, когда пользователь копирует текст. можно найти в документации -
Добавьте
ACTION_PROCESS_TEXT
фильтр намерений, чтобы пользователь мог выбрать созданное вами пользовательское действие / запустить ваше приложение. Больше можно найти в этом сообщении в блоге
Ответ №2:
Вам нужно добавить фильтр намерений к рассматриваемому действию, например:
<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>
Затем вам просто нужно обработать данные, отправленные вам в intent в вашей деятельности
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);
}