Android 使用剪切板传递数据
使用剪切板传递数据,可以传递简单的数据,也可以传递可序列化的对象。
首先来个简单点吧。
首先在,mainActivity.xml文件中加入一个button按钮
private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // TODO Auto-generated method stub button = (Button)this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @SuppressLint("NewApi") @Override public void onClick(View v) { // TODO Auto-generated method stub // 第一种情况:剪切板传递常用类型数据 // ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);//从android系统中调用剪切板服务 // String name = "jack"; // clipboardManager.setText(name); // Intent intent = new Intent(MainActivity.this,OtherActivity.class); // startActivity(intent); // 第二种情况:剪切板传递可序列化对象 MyData mydata = new MyData("jack","beijing"); //把对象转化成字符串 ByteArrayOutputStream byteArrayOutPutStream = new ByteArrayOutputStream(); String baseString = ""; try { ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutPutStream); objectOutputStream.writeObject(mydata); baseString = Base64.encodeToString(byteArrayOutPutStream.toByteArray(), Base64.DEFAULT); objectOutputStream.close(); } catch (Exception e) { // TODO: handle exception } ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText(baseString); Intent intent = new Intent(MainActivity.this,OtherActivity.class); startActivity(intent); } }); }
在此之前当然需要新建一个对象了,新建MyData.java
package com.example.android_intent3; import java.io.Serializable; public class MyData implements Serializable { private String age; private String name; public MyData(String age, String name) { super(); this.age = age; this.name = name; } @Override public String toString() { return "MyData [age=" + age + ", name=" + name + "]"; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public MyData() { // TODO Auto-generated constructor stub } }
当然也需要在mainActivity.xml文件中加入一个button
<Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="使用剪切板传递数据" />
还需要在新建一个布局文件other.xml文件加入:
<TextView android:id="@+id/msg" android:layout_width="fill_parent" android:layout_height="fill_parent"></TextView>
对了,还得新建OtherActivity.java文件,加入:
private TextView textView; public OtherActivity() { // TODO Auto-generated constructor stub } @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); //第一种情况 // textView = (TextView)this.findViewById(R.id.msg); // ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); // String msgString = clipboardManager.getText().toString(); //textView.setText(msgString); //第二种情况 textView = (TextView)this.findViewById(R.id.msg); //获取Android剪切板服务 ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); //获取剪切板里的数据 String msgString = clipboardManager.getText().toString(); //解码 byte[] base64_byte = Base64.decode(msgString, Base64.DEFAULT); //输出数据 ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte); try { ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); MyData mydata = (MyData)objectInputStream.readObject(); textView.setText(mydata.toString()); } catch (Exception e) { // TODO: handle exception } }
最后,当然不能忘了,在清单文件中加入OtherActivity.java.
<activity android:name=".OtherActivity"></activity>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。