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

首先来个简单点吧。

首先在,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>

Android 使用剪切板传递数据的更多相关文章

  1. Android剪切板传递数据传递序列化对象数据

    一.剪切板的使用介绍 1. 剪切板对象的创建 使用剪切板会用到,ClipboardManager对象,这个对像的创建不可以使用构造方法,主要是由于没有提供public的构造函数(单例模式),需要使用A ...

  2. android利用剪切板来实现数据的传递

    在Android开发中我们经常要遇到的一个问题就是数据在不同的Activity之间的共享.在Android开发中有很多种方法可以达到这个目地. 这里介绍一种比较常见.又常用的一种方法就是使用剪切板.我 ...

  3. Android 利用剪切板(clipboardManager )实现数据传递

    首先是系统剪切板的调用服务: ClipboardManager ClipboardManager=getSystemService(Context.CLIPBOARD_SERVICE); 然后是写入, ...

  4. Xamarin Android 中Acitvity如何传递数据

    在xamarin android的开发中,activity传递数据非常常见,下面我也来记一下在android中activity之间传递数据的几种方式, Xamarin Android中Activity ...

  5. Android系统剪切板

    Android系统剪贴板 复制字符串到系统剪切板 /** * 复制文本到剪切板 * * @param text * @return */ @SuppressWarnings("depreca ...

  6. Android 消息广播Intent传递数据

    1.创建布局文件activity_broadcast.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  7. android 使用静态变量传递数据

    使用静态变量传递数据之通用方式. 测试应用:当前页面点击button传递数据到一个新的页面显示在textview中. 首先在,mainActivity.xml文件中加入一个button按钮 <B ...

  8. Android学习之Intent传递数据

    Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据 ...

  9. Android Activity和Fragment传递数据

    1.Activity与Activity传递数据 UserLoginActivity.java: Intent welcomePage = new Intent(); Bundle dataBundle ...

随机推荐

  1. Differences Between Xcode Project Templates for iOS Apps

    Differences Between Xcode Project Templates for iOS Apps When you create a new iOS app project in Xc ...

  2. 三、freemarker数据、模版指令

    数据类型 1.         直接指定值(字符串.数值.布尔值.集合.Map对象) 2.         字符串:直接指定字符串使用单引号.双引号,字符中间可以使用转义符“\”,如果字符内有大量特殊 ...

  3. 一些常用到的Centos命令

    CentOS常用命令在我们的使用中,经常被使用.所以,我们对一些经常使用又很重要的CentOS常用命令进行了全面的整理.下面,就来介绍这些CentOS常用命令. 一:使用CentOS常用命令查看cpu ...

  4. 四则运算.html

    <DOCTYPE   html   PUBLTC"-//W3C//DTD   XHTML   1.0   Transitional//EN" "http://www ...

  5. 运用.NIT将数据存入数据库、读取数据库(运用封装)陈老师作业

    我基础不好,根据所学的知识,书本的例题修改的,也不知道我理解的是否符合老师要求 运用C#将数据存入数据库.并且可以读取数据库里的数据,此项目我运用了封装.我运用了一个窗体将数据存读数据. 我首先创建了 ...

  6. 4554: [Tjoi2016&Heoi2016]游戏 二分图匹配

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4554 题解: 如果没有硬石头的话,就是’*‘点对应的行列建边,然后跑最大匹配 硬石头什么 ...

  7. 使用IntersectionObserver更高效的监视某个页面元素是否进入了可见窗口

    比如说,你想跟踪 DOM 树里的一个元素,当它进入可见窗口时得到通知. 也许想实现即时延迟加载图片功能,或者你需要知道用户是否真的在看一个广告 banner. 你可以通过绑定 scroll 事件或者用 ...

  8. 版本控制 - SVN/TortoiseSVN

    研读了blog: 1. http://www.open-open.com/lib/view/open1346982569725.html  2. http://www.360doc.com/conte ...

  9. iNode for linux install

    http://wenku.baidu.com/link?url=953T6GZCnaBzwr4YqPFUT4oOyYr4wyOnXlCLO1OUYZkaJWh2fTs634SM7ZpYiTKkpmYX ...

  10. MX记录

    是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器.MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然 ...