鸟语天空
剪贴板——ClipboardManager
post by:追风剑情 2016-7-29 18:09
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);
	}
}
评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容