Как программно скопировать текст в моем приложении для Android?

Я создаю приложение для Android и хочу скопировать 9X_android-device текстовое значение виджета EditText. Пользователь 9X_android-device может нажать Menu+A, затем Menu+C, чтобы скопировать 9X_android-sdk значение, но как мне сделать это программно?

256
1

  • ClipboardManager. http://developer.android.com/reference/android/content/Clipb ...
13
Общее количество ответов: 13

Ответ #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

474
4

  • @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 в манифесте объявлено что-то вроде следующего:


222
3

  • Вы добавили целевой и минимальный 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

17
0

Ответ #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

14
0

Ответ #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 может быть несколько вещей. Вы можете проверить каждый, если сочтете его более читабельным.
14
1

  • Для чего нужен текстовый ярлык?<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());
        }
    }
}

8
0

Ответ #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

7
0

Ответ #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 вы увидите панель действий копирования / вставки.

6
0

Ответ #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;

3
0

Ответ #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)

}

3
0

Ответ #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)

3
0

Ответ #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

2
0

Ответ #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

1
0