Как установить буфер обмена в эмуляторе Android на бутерброд с мороженым?
Я нашел решение командной строки для установки текста буфера обмена в Gingerbread AVD, но эта командная строка не работает, когда я запускаю ICS AVD.
С этой страницы я создал скрипт: вставка текста в буфер обмена эмулятора Android с помощью оболочки adb.
Опять же, это прекрасно работает для записи в буфер обмена и чтения содержимого, если я использую Gingerbread AVD, но когда я пишу в буфер обмена ICS, возвращаемая посылка просто говорит "Неизвестный пакет", и когда я пытаюсь читать буфер обмена, кажется, чтобы вернуть пустую строку.
2 ответа
Вот как это сделать:
Я использую основной метод, который принимает параметр oldApi, когда false использует старые API-интерфейсы Clip Android, а когда true - новые API-интерфейсы Clip.
Полный проект: https://github.com/daniel-c05/LightClipper/blob/master/src/com/deadpixels/light/clipper/utils/ClipHelper.java
/**
*
* @param context The context
* @param label The label to show to the user via {@code ClipDescription}
* @param value The actual value to store on the clipboard via {@link ClipHelper#addItemToClipboard(Context, String, String)}
* @param oldAPI Whether or not we are running on pre-HoneyComb API.
*/
public static void addItemToClipboard(final Context context, final String label, final String value, final boolean oldAPI) {
if (oldAPI) {
addTextToClipboard(context, value);
}
else {
addItemToClipboard(context, label, value);
}
}
/**
* This is only called when oldAPi is passed as false on {@link #addItemToClipboard(Context, String, String, boolean)}
* @param context The context, required to get the Cliboard System Service.
* @param label The label to show to the user via {@code ClipDescription}
* @param value The value to store on the clipboard.
*/
@SuppressLint("NewApi")
private static void addItemToClipboard (final Context context, final String label, final String value) {
ClipboardManager manager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData.Item item = new Item(value);
ClipDescription description = new ClipDescription(label, new String [] {ClipDescription.MIMETYPE_TEXT_PLAIN});
ClipData data = new ClipData(description, item);
manager.setPrimaryClip(data);
}
/**
* This is only called when oldAPi is passed as true on {@link #addItemToClipboard(Context, String, String, boolean)}
* @param context The context, required to get the Cliboard System Service.
* @param value The value to store on the clipboard.
*/
@SuppressWarnings("deprecation")
private static void addTextToClipboard (final Context context, final String value) {
android.text.ClipboardManager manager = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
manager.setText(value);
}
Я надеюсь, что эта ссылка примера будет работать для вашего ответа. Build Target этого проекта: Android 4.0, который будет работать на эмуляторе ICS.
http://www.edumobile.org/android/android-tutorial/clipboard-example-in-android-development/
В этом примере показано, как использовать менеджер буфера обмена для копирования текста / намерений / URL в Android.