使用剪切板在Activity之间传递对象数据,要用到一个特殊的类---android.util.Base64.java,将对象转换成字符串,再在剪切板中放入要传递的数据,在接收端将字符串还原成对象,在把数据取出来,通过例子来看一下如何实现:
工程结构图:
运行结果如下:
MainActivity截图:
OtherActivity截图:
开始上源代码:
MainActivity.java:
package com.intent.activity;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.ClipboardManager;
import android.util.Base64;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button)findViewById(R.id.btOpenOtherActivity);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Person person = new Person("wulianghuan","22");
//将对象转换成字符串
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
String base64String = "";
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(person);
base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
//从Android系统中调用剪切板的服务
ClipboardManager clipboardManager = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
//在剪切板中放入要传递的数据
clipboardManager.setText(base64String);
//定义一个意图
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);
}
});
}
}
OtherActivity.java:
package com.intent.activity;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.StreamCorruptedException;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.ClipboardManager;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class OtherActivity extends Activity {
private TextView text_name;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
text_name = (TextView) findViewById(R.id.name);
//从Android系统中调用剪切板的服务
ClipboardManager clipboardManager = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
String getString = clipboardManager.getText().toString();
//字符串还原成对象
byte[] base64_byte = Base64.decode(getString, Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);
try {
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
Person person = (Person)objectInputStream.readObject();
Log.i("OtherActivity", person.toString());
//设置文本框的数据
text_name.setText(person.toString());
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
由于main.xml文件比较简单,这里就不给出源代码了
注意在AndroidManifest.xml中对OtherActivity进行声明。
分享到:
相关推荐
在Activity之间数据传递还可以利用一些技巧,不管是Windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取数据。
本文主要介绍android应用android系统中剪切板进行数据的传递,首先讲解的是传递简单数据,然后讲解传递对象类型的数据。 所有实例均在android api 15下测试通过,所以先新建一个android应用程序。 – 传递简单类型...
在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取数据,在Android系统...
在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取数据,在Android系统...
在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何...
Android源代码:图片剪切ImageCutDemo。。。。。。。。
android的插件:图片剪切工具Android-Crop-master。。
鸿蒙开发笔记十:剪切板
相对于getText和setText而言,利用ClipData对象来传递数据,更符合面向对象的思想,而且所能传递的数据类型也多样化了
4种最常用的Intent传递方式,这4种方式如下: 1、通过Intent传递数据 2、通过静态变量传递数据 3、通过剪切板传递数据 4、通过全局变量传递数据
js与剪切板数据互动,js从剪切板存放数据,实现复制剪切粘贴等操作
工程只提取了监视功能, 使用windows 对应剪切板API。 使用方法: 1、初始化 使用 SetClipboardViewer ,把本窗口句柄传入,并且保存返回的下个窗口句柄。 2、在消息响应函数中 WindowProc中 处理WM_CHANGECBCHAIN,...
ios+android+h5复制剪切板
C#剪切板使用源代码,适合新手入门参考使用。
狂刷Android范例系列文章开张了。每篇学习一个Android范例,将一个范例单独生成一个可运行的app,并对重点源代码进行简要分析。...功能很简单,使用Android提供的剪贴板,复制不同类型的数据到剪贴板。
python使用剪切板. 简单的几行代码。写应用程序的二次开发能用上。
清空剪切板ClearOfficeClipboard类,可用在Excel的VBA中
剪切板 网页操作 c++ 剪切板 网页操作 vc