Как программно скопировать текст в моем приложении для Android?
Я создаю приложение для Android и хочу скопировать 9X_android-device текстовое значение виджета EditText. Пользователь 9X_android-device может нажать Menu+A
, затем Menu+C
, чтобы скопировать 9X_android-sdk значение, но как мне сделать это программно?
- ClipboardManager. http://developer.android.com/reference/android/content/Clipb ...
Ответ #1
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Используйте метод ClipboardManager#setPrimaryClip
:
import android.content.ClipboardManager;
// ...
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
ClipboardManager
API reference
9X_android-mobile
- @AlaaM. Я думаю, что этот лоток для зажимов - опц ...
Ответ #2
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Итак, все согласны с тем, как это должно 9X_android быть сделано, но, поскольку никто не хочет 9X_clipboardmanager давать полное решение, вот что:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText("text to clip");
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("text label","text to clip");
clipboard.setPrimaryClip(clip);
}
Я предполагаю, что 9X_submenu в манифесте объявлено что-то вроде следующего:
- Вы добавили целевой и минимальный SDK в сво ...
Ответ #3
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Поиск в Google приводит вас к android.content.ClipboardManager, и 9X_android-device вы можете решить, как и я, что буфер обмена 9X_submenu недоступен в API <11, потому что на странице 9X_menuitem документации указано «Since: API Level 11».
На 9X_android самом деле существует два класса, второй 9X_menuitem расширяет первый - android.text.ClipboardManager 9X_clipboardmanager и android.content.ClipboardManager.
android.text.ClipboardManager 9X_menuitem существует с API 1, но работает только с 9X_android-ui текстовым содержимым.
android.content.ClipboardManager 9X_android-device - предпочтительный способ работы с буфером 9X_submenu обмена, но он недоступен на уровне API <11 9X_android-application (Honeycomb).
Чтобы получить любой из них, вам 9X_android-mobile понадобится следующий код:
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
Но для API <11 необходимо 9X_android-application импортировать android.text.ClipboardManager
, а для API> = 11 android.content.ClipboardManager
Ответ #4
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
public void onClick (View v) { switch (v.getId()) { case R.id.ButtonCopy: copyToClipBoard(); break; case R.id.ButtonPaste: pasteFromClipBoard(); break; default: Log.d(TAG, "OnClick: Unknown View Received!"); break; } } // Copy EditCopy text to the ClipBoard private void copyToClipBoard() { ClipboardManager clipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipMan.setPrimaryClip(editCopy.getText()); }
вы можете попробовать это ..
9X_android-ui
Ответ #5
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Обновление библиотеки поддержки Android
Начиная с Android Oreo, библиотека поддержки 9X_android-sdk опускается только до API 14. Большинство 9X_android-api новых приложений, вероятно, также имеют 9X_clipboardmanager минимальный API 14, и поэтому не нужно беспокоиться 9X_android-application о проблемах с API 11, упомянутых в некоторых 9X_android других. ответы. Можно очистить большую часть 9X_android-ui кода. (Но посмотрите мою историю изменений, если 9X_menu вы все еще поддерживаете более ранние версии.)
Копировать
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", selectedText);
if (clipboard == null || clip == null) return;
clipboard.setPrimaryClip(clip);
Вставить
Я 9X_android-api добавляю этот код в качестве бонуса, потому 9X_android-framework что копирование / вставка обычно выполняется 9X_android-framework парами.
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
try {
CharSequence text = clipboard.getPrimaryClip().getItemAt(0).getText();
} catch (Exception e) {
return;
}
Примечания
- Обязательно импортируйте версию
android.content.ClipboardManager
, а не старуюandroid.text.ClipboardManager
. То же самое дляClipData
. - Если вы не занимаетесь деятельностью, вы можете получить услугу с помощью
context.getSystemService()
. - Я использовал блок try / catch для получения вставляемого текста, потому что
null
может быть несколько вещей. Вы можете проверить каждый, если сочтете его более читабельным.
- Для чего нужен текстовый ярлык?<p><span class="uc ...
Ответ #6
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Вот код для реализации некоторых функций 9X_android копирования и вставки из EditText (спасибо 9X_menu Warpzit за проверку версии). Вы можете привязать 9X_submenu их к событию onclick вашей кнопки.
public void copy(View v) {
int startSelection = txtNotes.getSelectionStart();
int endSelection = txtNotes.getSelectionEnd();
if ((txtNotes.getText() != null) && (endSelection > startSelection ))
{
String selectedText = txtNotes.getText().toString().substring(startSelection, endSelection);
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(selectedText);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("WordKeeper",selectedText);
clipboard.setPrimaryClip(clip);
}
}
}
public void paste(View v) {
int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), clipboard.getText());
}
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
if (item.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), item.getText());
}
}
}
Ответ #7
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("label", "Text to copy"); if (clipboard == null || clip == null) return; clipboard.setPrimaryClip(clip);
И импортировать
import android.content.ClipboardManager;
9X_clipboardmanager
Ответ #8
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Чтобы включить стандартное копирование / вставку 9X_menus для TextView, U может выбрать один из следующих 9X_android-framework вариантов:
Изменение в файле макета: добавьте 9X_menu свойство ниже в свой TextView
android:textIsSelectable="true"
В вашем классе 9X_android-application Java напишите в этой строке две грамматические 9X_clipboardmanager установки.
myTextView.setTextIsSelectable(true);
При длительном нажатии на TextView 9X_android вы увидите панель действий копирования / вставки.
Ответ #9
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
@FlySwat уже дал правильный ответ, я просто 9X_android-ui делюсь полным ответом:
Используйте метод 9X_menus ClipboardManager.setPrimaryClip (http://developer.android.com/reference/android/content/ClipboardManager.html):
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
Где label
- видимая 9X_clipboardmanager пользователем метка для данных клипа и
text
- это 9X_clipboardmanager фактический текст в клипе. Согласно official docs.
Важно 9X_android-framework использовать этот импорт:
import android.content.ClipboardManager;
Ответ #10
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Для Kotlin мы можем использовать следующий 9X_android-api метод. Вы можете вставить этот метод в действие 9X_android-api или фрагмент.
fun copyToClipBoard(context: Context, message: String) {
val clipBoard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label",message)
clipBoard.setPrimaryClip(clipData)
}
Ответ #11
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Для Kotlin используйте приведенный ниже 9X_menus код внутри действия.
import android.content.ClipboardManager
val clipBoard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label","Message to be Copied")
clipBoard.setPrimaryClip(clipData)
Ответ #12
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Или создайте расширение Kotlin
fun String.copyToClipboard(context: Context) {
val clipBoard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label",this)
clipBoard.setPrimaryClip(clipData)
}
а затем позвоните
"stringToCopy".copyToClipboard(requireContext())
9X_android
Ответ #13
Ответ на вопрос: Как программно скопировать текст в моем приложении для Android?
Вот мой рабочий код
/**
* Method to code text in clip board
*
* @param context context
* @param text text what wan to copy in clipboard
* @param label label what want to copied
*/
public static void copyCodeInClipBoard(Context context, String text, String label) {
if (context != null) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(label, text);
if (clipboard == null || clip == null)
return;
clipboard.setPrimaryClip(clip);
}
}
9X_android
-
6
-
20
-
3
-
1
-
6
-
9
-
4
-
9
-
5
-
9
-
5
-
4
-
5
-
4
-
3
-
5
-
5
-
11
-
3
-
4
-
4
-
3
-
3
-
16
-
3
-
6
-
4
-
2
-
6
-
7
-
6
-
2
-
4
-
2
-
6
-
4
-
3
-
11
-
1
-
6
-
3
-
1
-
4
-
4
-
3
-
3
-
11
-
4
-
3
-
9