使用剪切板传递数据

使用剪切板传递数据,可以传递简单的数据,也可以传递可序列化的对象。

首先来个简单点吧。

首先在,mainActivity.xml文件中加入一个button按钮

[java]  view plain copy
  1. private Button button;  
  2.     @Override  
  3.     protected void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.         setContentView(R.layout.activity_main);  
  6.         // TODO Auto-generated method stub  
  7.                 button = (Button)this.findViewById(R.id.button);  
  8.                 button.setOnClickListener(new View.OnClickListener() {  
  9.                       
  10.                     @SuppressLint("NewApi")  
  11.                     @Override  
  12.                     public void onClick(View v) {  
  13.                         // TODO Auto-generated method stub  
  14.                           
  15.                         //  第一种情况:剪切板传递常用类型数据  
  16. //                      ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);//从android系统中调用剪切板服务  
  17. //                      String name = "jack";  
  18. //                      clipboardManager.setText(name);  
  19. //                      Intent intent = new Intent(MainActivity.this,OtherActivity.class);  
  20. //                      startActivity(intent);  
  21.                           
  22.                         //  第二种情况:剪切板传递可序列化对象  
  23.                         MyData mydata = new MyData("jack","beijing");  
  24.                         //把对象转化成字符串  
  25.                         ByteArrayOutputStream byteArrayOutPutStream = new ByteArrayOutputStream();  
  26.                         String baseString = "";  
  27.                         try {  
  28.                             ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutPutStream);  
  29.                             objectOutputStream.writeObject(mydata);  
  30.                             baseString = Base64.encodeToString(byteArrayOutPutStream.toByteArray(), Base64.DEFAULT);  
  31.                             objectOutputStream.close();  
  32.                         } catch (Exception e) {  
  33.                             // TODO: handle exception  
  34.                         }  
  35.                         ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);  
  36.                         clipboardManager.setText(baseString);  
  37.                         Intent intent = new Intent(MainActivity.this,OtherActivity.class);  
  38.                         startActivity(intent);  
  39.                     }  
  40.                 });  
  41.             }  
在此之前当然需要新建一个对象了,新建MyData.java

[java]  view plain copy
  1. package com.example.android_intent3;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. public class MyData implements Serializable {  
  6.   
  7.     private String age;  
  8.     private String name;  
  9.   
  10.     public MyData(String age, String name) {  
  11.         super();  
  12.         this.age = age;  
  13.         this.name = name;  
  14.     }  
  15.   
  16.     @Override  
  17.     public String toString() {  
  18.         return "MyData [age=" + age + ", name=" + name + "]";  
  19.     }  
  20.   
  21.     public String getAge() {  
  22.         return age;  
  23.     }  
  24.   
  25.     public void setAge(String age) {  
  26.         this.age = age;  
  27.     }  
  28.   
  29.     public String getName() {  
  30.         return name;  
  31.     }  
  32.   
  33.     public void setName(String name) {  
  34.         this.name = name;  
  35.     }  
  36.   
  37.     public MyData() {  
  38.         // TODO Auto-generated constructor stub  
  39.     }  
  40.   
  41. }  
当然也需要在mainActivity.xml文件中加入一个button

[html]  view plain copy
  1. <Button  
  2.        android:id="@+id/button"  
  3.        android:layout_width="fill_parent"  
  4.        android:layout_height="wrap_content"  
  5.        android:text="使用剪切板传递数据" />  
还需要在新建一个布局文件other.xml文件加入:

[html]  view plain copy
  1. <TextView android:id="@+id/msg"  android:layout_width="fill_parent"  
  2.     android:layout_height="fill_parent"></TextView>  
对了,还得新建OtherActivity.java文件,加入:
[java]  view plain copy
  1. private TextView textView;  
  2.     public OtherActivity() {  
  3.         // TODO Auto-generated constructor stub  
  4.     }  
  5.     @SuppressLint("NewApi")  
  6.     @Override  
  7.     protected void onCreate(Bundle savedInstanceState) {  
  8.         // TODO Auto-generated method stub  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.other);  
  11.         //第一种情况  
  12. //      textView = (TextView)this.findViewById(R.id.msg);  
  13. //      ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);  
  14. //      String msgString = clipboardManager.getText().toString();  
  15.         //textView.setText(msgString);  
  16.         //第二种情况  
  17.         textView = (TextView)this.findViewById(R.id.msg);  
  18.         //获取Android剪切板服务  
  19.         ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);  
  20.         //获取剪切板里的数据  
  21.         String msgString = clipboardManager.getText().toString();  
  22.         //解码  
  23.         byte[] base64_byte =  Base64.decode(msgString, Base64.DEFAULT);  
  24.         //输出数据  
  25.         ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);  
  26.         try {  
  27.             ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);  
  28.             MyData mydata = (MyData)objectInputStream.readObject();  
  29.             textView.setText(mydata.toString());  
  30.         } catch (Exception e) {  
  31.             // TODO: handle exception  
  32.         }  
  33.     }  
最后,当然不能忘了,在清单文件中加入OtherActivity.java.

[html]  view plain copy
  1. <activity android:name=".OtherActivity"></activity>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值