当我们用剪切板的时候我们首先应该获得ClipboardManager对象,但是我们值得注意的是Android在3.0之前ClipboardManager在android.text.ClipboardManager包内,在3.0之后

在android.content.ClipboardManager包内

下面是代码

if (android.os.Build.VERSION.SDK_INT > 11) {
android.content.ClipboardManager c = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
c.setText(activitioncode.getText());

} else {
android.text.ClipboardManager c = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

c.setText(activitioncode.getText());
}

往clipboard里面设置值我们可以c.setText(text)


前段时间忙着学东西做东西,这几天小马有时间就拿来学习下官方的文档,里面好东西太多了,今天看到了Clip,反正不懂,小马带着无耻的好奇心,做了个DEMO,先讲下注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管是安卓设备还是PC机,复制粘贴在同一时间里只能用于一个对象上,整通俗点就是:PC机上,不可能同时从C盘复制,又从D盘复制就行了,具体的看代码,很简单,直接上代码:

1.package com.xiaoma.clipboard.demo;
2.
3.import android.app.Activity;
4.import android.content.ClipData;
5.import android.content.ClipData.Item;
6.import android.content.ClipDescription;
7.import android.content.ClipboardManager;
8.import android.content.ContentResolver;
9.import android.content.Intent;
10.import android.database.Cursor;
11.import android.net.Uri;
12.import android.os.Bundle;
13.import android.view.View;
14.import android.view.View.OnClickListener;
15.import android.widget.Button;
16.import android.widget.Toast;
17.
18./**
19.* @Title: ClipBoardDemoActivity.java
20.* @Package com.xiaoma.clipboard.demo
21.* @Description: 剪贴板学习
22.* @author MZH
23.*/
24.public class ClipBoardDemoActivity extends Activity implements OnClickListener{
25.
26. private Button put = null;
27. private Button get = null;
28. private ClipboardManager clipboard = null;
29. private static final String CONTACTS = "content://com.example.contacts";
30. private String COPY_PATH = "/copy";
31. public static final String MIME_TYPE_CONTACT = "vnd.android.cursor.item/vnd.xiaoma.contact";
32. @Override
33. public void onCreate(Bundle savedInstanceState) {
34. super.onCreate(savedInstanceState);
35. setContentView(R.layout.main);
36. init();
37. }
38.
39. /**
40. * 初始化方法实现
41. */
42. private void init(){
43. put = (Button)findViewById(R.id.button1);
44. put.setOnClickListener(this);
45.
46. get = (Button)findViewById(R.id.button2);
47. get.setOnClickListener(this);
48. }
49.
50. /**
51. * 监听实现
52. */
53. @Override
54. public void onClick(View v) {
55. switch (v.getId()) {
56. case R.id.button1:
57. put();
58. break;
59. case R.id.button2:
60. get();
61. break;
62. default:
63. break;
64. }
65. }
66.
67. /**
68. * 往Clip中放入数据
69. */
70. private void put(){
71.
72. /**
73. * 往ClipboardManager中可放的数据类型有三种:
74. * 因为大家都知道,就算是电脑,Ctrl+c也不可能在同一时间里即
75. * 从C盘剪贴,又从D般剪贴,所以小马只写一种简单的信息进去,
76. * 另外两种写在注释中
77.
78. //类型一:text
79. clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
80. ClipData textCd = ClipData.newPlainText("kkk", "WaHouHou!Clip....");
81. clipboard.setPrimaryClip(textCd);
82. */
83. /**
84. *
85. //类型二:URI
86. Uri copyUri = Uri.parse(CONTACTS + COPY_PATH + "/" + "XiaoMa");
87. ClipData clipUri = ClipData.newUri(getContentResolver(),"URI",copyUri);
88. clipboard.setPrimaryClip(clipUri);
89. *
90. */
91. //类型三:Intent
92. //试下在Intent剪贴时使用Bundle传值进去
93. clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
94. Intent appIntent = new Intent();
95. Bundle bundle = new Bundle();
96. bundle.putInt("xiaoma", 3344258);
97. bundle.putInt("yatou", 3344179);
98. appIntent.putExtra("XiaoMaGuo", bundle);
99. appIntent.setClass(ClipBoardDemoActivity.this, ReceiverClip.class);
100. ClipData clipIntent = ClipData.newIntent("Intent",appIntent);
101. clipboard.setPrimaryClip(clipIntent);
102. }
103.
104. /**
105. * 从Clip中取数据
106. */
107. private void get(){
108. clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
109. Item item = null;
110.
111. //无数据时直接返回
112. if(!clipboard.hasPrimaryClip()){
113. Toast.makeText(getApplicationContext(), "剪贴板中无数据", Toast.LENGTH_SHORT).show();
114. return ;
115. }
116.
117. //如果是文本信息
118. if (clipboard.getPrimaryClipDescription().hasMimeType(
119. ClipDescription.MIMETYPE_TEXT_PLAIN)) {
120. ClipData cdText = clipboard.getPrimaryClip();
121. item = cdText.getItemAt(0);
122. //此处是TEXT文本信息
123. if(item.getText() == null){
124. Toast.makeText(getApplicationContext(), "剪贴板中无内容", Toast.LENGTH_SHORT).show();
125. return ;
126. }else{
127. Toast.makeText(getApplicationContext(), item.getText(), Toast.LENGTH_SHORT).show();
128. }
129.
130. //如果是INTENT
131. } else if (clipboard.getPrimaryClipDescription().hasMimeType(
132. ClipDescription.MIMETYPE_TEXT_INTENT)) {
133. //此处是INTENT
134. item = clipboard.getPrimaryClip().getItemAt(0);
135. Intent intent = item.getIntent();
136. startActivity(intent);
137. //........
138.
139. //如果是URI
140. } else if (clipboard.getPrimaryClipDescription().hasMimeType(
141. ClipDescription.MIMETYPE_TEXT_URILIST)) {
142. //此处是URI内容www.2cto.com
143. ContentResolver cr = getContentResolver();
144. ClipData cdUri = clipboard.getPrimaryClip();
145. item = cdUri.getItemAt(0);
146. Uri uri = item.getUri();
147. if(uri != null){
148. String mimeType = cr.getType(uri);
149. if (mimeType != null) {
150. if (mimeType.equals(MIME_TYPE_CONTACT)) {
151. Cursor pasteCursor = cr.query(uri, null, null, null, null);
152. if (pasteCursor != null) {
153. if (pasteCursor.moveToFirst()) {
154. //此处对数据进行操作就可以了,前提是有权限
155. }
156. }
157. pasteCursor.close();
158. }
159. }
160. }
161. }
162. }
163.}
下面是用来接收Intent传递的值,临时的一个Activity,代码更简单:

1.package com.xiaoma.clipboard.demo;
2.
3.import android.app.Activity;
4.import android.content.Intent;
5.import android.os.Bundle;
6.import android.view.TextureView;
7.import android.widget.TextView;
8.
9./**
10. * @Title: ReceiverClip.java
11. * @Package com.xiaoma.clipboard.demo
12. * @Description:临时用来接收下从Clip传过来的Intent值
13. * @author MZH
14. */
15.public class ReceiverClip extends Activity {
16.
17. private TextView tv1 ;
18. private TextView tv2 ;
19.
20. @Override
21. protected void onCreate(Bundle savedInstanceState) {
22. // TODO Auto-generated method stub
23. super.onCreate(savedInstanceState);
24. setContentView(R.layout.main2);
25. init();
26. }
27.
28. private void init(){
29.
30. tv1 = (TextView)findViewById(R.id.xiaoma);
31. tv2 = (TextView)findViewById(R.id.yatou);
32.
33. Intent intent = getIntent();
34. Bundle b =intent.getBundleExtra("XiaoMaGuo");
35. if(b != null){
36. int xiaoma = b.getInt("xiaoma");
37. int yatou = b.getInt("yatou");
38. if(!"".equals(String.valueOf(xiaoma)) && !"".equals(String.valueOf(yatou))){
39. tv1.setText(String.valueOf(xiaoma));
40. tv2.setText(String.valueOf(yatou));
41. }
42. }
43. }
44.}
全局配置文件里面没什么,如下:

1.<?xml version="1.0" encoding="utf-8"?>
2.<manifest xmlns:android=""
3. package="com.xiaoma.clipboard.demo"
4. android:versionCode="1"
5. android:versionName="1.0" >
6.
7. <uses-sdk android:minSdkVersion="14" />
8.
9. <application
10. android:icon="@drawable/guoguo"
11. android:label="@string/app_name" >
12. <activity
13. android:name=".ClipBoardDemoActivity"
14. android:label="@string/app_name" >
15. <intent-filter>
16. <action android:name="android.intent.action.MAIN" />
17.
18. <category android:name="android.intent.category.LAUNCHER" />
19. </intent-filter>
20. </activity>
21. <activity android:name=".ReceiverClip"></activity>
22. </application>
23.
24.</manifest>
如果因为没效果图看不爽的话,朋友们可以直接下载小马写的DEMO,代码很简单,大牛跳过,跟小马一样的菜菜可以学习交流下,吼吼...老规矩,如有小马讲不清楚的地方,还请朋友直接批评指点,有错必改,共同提高进步,谢谢

摘自 酷_莫名简单

Android学习交流群:523487222

(欢迎加入,一起学习进步)
点击链接加入群【Android学习群】

更多相关文章

  1. Android在开机时自动启动一个应用程序
  2. Android(安卓)editText
  3. Android(安卓)DrawerLayout实现抽屉效果实例代码
  4. NDK 学习 ndk基础
  5. Android官方入门文档[16]创建一个Fragment代码片段
  6. Android(安卓)近百个项目的源代码,覆盖Android开发的每个领域
  7. 使用Android自带的DownloadManager下载文件
  8. android tab上显示数字
  9. apk安装法之二----一段Android实现应用下载并自动安装apk包的代

随机推荐

  1. 扩展 jwt 解决 oauth2 性能瓶颈
  2. 【长文剖析】Spring Cloud OAuth 发放Tok
  3. 解决 nacos 在 Spring boot admin 中不能
  4. mica 微服务核心组件 1.0.0 正式版发布
  5. 微服务架构必备—mica,开源 pro 全部功能
  6. mica cglib 增强——[1]cglib bean copy
  7. mica 1.1.7 发布 mica-http 组件毕业从 h
  8. Spring Cloud OAuth 微服务内部Token传递
  9. Pycharm激活码2021年,可以永久使用最新专
  10. Cglib 和 Mica Bean copy 生成字节码对比