0

我找到了在 Gingerbread AVD 中设置剪贴板文本的命令行解决方案,但是当我运行 ICS AVD 时,此命令行不起作用。

我从这个页面构建了一个脚本:Pasteing text into Android emulator clipboard using adb shell

同样,如果我使用的是 Gingerbread AVD,这对于写入剪贴板和读取内容非常有效,但是当我写入 ICS 剪贴板时,返回的包裹只会显示“未知包”,而当我尝试阅读剪贴板,它似乎返回一个空字符串。

4

2 回答 2

0

这是如何做到的:

当 false 使用 Android 的旧 Clip API 并且当 true 使用新 Clip API 时,我使用一个 main 方法,该方法采用参数 oldApi。

完整项目: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);         
}
于 2013-02-16T22:30:18.577 回答
0

我希望这个示例链接对您的答案有用。该项目的构建目标:Android 4.0 将在 ICS 的 Emulator 上运行。

http://www.edumobile.org/android/android-tutorial/clipboard-example-in-android-development/

这个例子展示了如何使用剪贴板管理器在 android 中复制 text/intent/url。

于 2013-02-16T22:04:44.710 回答