package com.test.androidtest; import android.content.ClipData; import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.net.Uri; /** * 剪贴板助手 * Android 3.0(API level 11)引入了对使用ClipboardManager在应用程序内部(之间)进行完全复制和粘贴操作的支持。 * 剪贴板支持文本字符串、URI(通常是指向一个Content Provider项)和Intent(用于复制应用程序的快捷方式)。 * 要想向剪贴板复制一个对象,可以创建一个新的ClipData对象,它包含了一个描述了与待复制对象相关的元数据的ClipDescription、 * 任意数量的ClipData.Item对象。 * 在任意时刻,剪贴板中只能包含一个ClipData对象。复制一个新的对象会替换之前持有的剪贴板对象。 */ public class ClipBoardHelper { //粘贴ClipData.Item public static void SetClipboard(Context context, ClipData.Item item){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); //任意剪贴板项的内容也是可以粘贴的,即使应用程序只支持文本。 //使用coerceToText方法,可以将ClipData.Item对象的内容转化为一个字符串。 CharSequence pasteText = item.coerceToText(context); ClipData newClip = ClipData.newPlainText("Text", pasteText); clipboard.setPrimaryClip(newClip); } //粘贴Intent public static void SetClipboard(Context context, Intent intent){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); ClipData newClip = ClipData.newIntent("Intent", intent); clipboard.setPrimaryClip(newClip); } //粘贴URI public static void SetClipboard(Context context, Uri uri){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); ClipData newClip = ClipData.newUri(context.getContentResolver(), "URI", uri); clipboard.setPrimaryClip(newClip); } //粘贴String public static void setClipboard(Context context, String text) { ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); ClipData newClip = ClipData.newPlainText("Text", text); clipboard.setPrimaryClip(newClip); } //获取String public static String getString(Context context){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); //要想访问数据本身,可以使用getItemAt方法,传入你想遍历的项的索引值。 ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0); CharSequence pasteData = item.getText(); return (String)pasteData; } //获取URI public static Uri getUri(Context context){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0); Uri pasteUri = item.getUri(); return pasteUri; } //获取URI public static Intent getIntent(Context context){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0); Intent pasteIntent = item.getIntent(); return pasteIntent; } //判断剪贴板中是否已经复制了数据 public static boolean hasPrimaryClip(Context context){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); return clipboard.hasPrimaryClip(); } //判断剪贴版中数据类型是否为指定的MIME类型 //文本类型:ClipDescription.MIMETYPE_TEXT_PLAIN //URI类型:ClipDescription.MIMETYPE_TEXT_URILIST //Intent类型:ClipDescription.MIMETYPE_TEXT_INTENT private static boolean hasMimeType(Context context, String mimeType){ ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE); //获取剪贴板数据中的元数据 ClipDescription cd = clipboard.getPrimaryClipDescription(); //判断剪贴板中的内容是否为mimeType类型 return cd.hasMimeType(mimeType); } //判断剪贴版中数据类型是否为文本 public static boolean hasMimeTypePlain(Context context){ return hasMimeType(context, ClipDescription.MIMETYPE_TEXT_PLAIN); } //判断剪贴版中数据类型是否为Uri public static boolean hasMimeTypeUri(Context context){ return hasMimeType(context, ClipDescription.MIMETYPE_TEXT_URILIST); } //判断剪贴板中数据类型是否为Intent public static boolean hasMimeTypeIntent(Context context){ return hasMimeType(context, ClipDescription.MIMETYPE_TEXT_INTENT); } }