通过Clipboard传递数据
来源:互联网 发布:电商团队美工工资提成 编辑:程序博客网 时间:2024/06/08 14:19
android开发中经常会碰到传递数据,尤其是2个Activity之间,当然我们更喜欢用Intent毕竟启动Activity的时候用的就是Intent ,但只有这一种方法吗,下面就给大家介绍一种通过剪切板传递数据的方法,为了防止该数据被任意的复制黏贴,我们用Base64加密。
布局文件很简单,第一个Activity的布局文件只有一个Button 触发第二个Activity,第二个Activity只有一个TextView用来显示数据。
简单起见,我们只贴出Activity的部分,同时不要忘了四大组建需要在manifest里面注册的哦。
package com.example.blog;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.StreamCorruptedException;import android.app.Activity;import android.content.ClipboardManager;import android.content.Context;import android.os.Bundle;import android.util.Base64;import android.widget.TextView;public class ClipActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.showclip);TextView tv=(TextView) findViewById(R.id.tv);/** * 下面的代码从剪切板中获取Base64格式的字符串 */ClipboardManager clipboard=(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);String base64Str=clipboard.getText().toString();byte[] buffer=Base64.decode(base64Str, Base64.DEFAULT);ByteArrayInputStream bais=new ByteArrayInputStream(buffer);try {ObjectInputStream ois=new ObjectInputStream(bais);//将byte[]数据还原成String对象String receiveData=(String) ois.readObject();tv.setText(receiveData);} catch (StreamCorruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
第二个Activity:
package com.example.blog;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.util.Date;import android.app.Activity;import android.app.Application;import android.content.ClipboardManager;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.util.Base64;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button bt=(Button) findViewById(R.id.clip);bt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this,ClipActivity.class);String data="我是通过ClipBoard传递的数据";ClipboardManager clipboard=(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);//下面代码将data转化为Base64格式的字符串ByteArrayOutputStream baos=new ByteArrayOutputStream();String base64str="";try {ObjectOutputStream oos=new ObjectOutputStream(baos);oos.writeObject(data);//使用Base64.encodeToString方法将byte[]数据装换成Base64字符串base64str=Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);oos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//向剪切板写入Base64格式的字符串clipboard.setText(base64str);startActivity(intent);}});}}于是,我们又掌握了一种传递数据的方法,不过需要注意的是既然此处使用了剪切板其他地方的copy的内容就没了哦
0 0
- 通过Clipboard传递数据
- Clipboard传递数据
- 通过Intent传递数据
- 通过url传递大数据
- Android通过全局变量传递数据
- Android--通过Application传递数据
- Android 通过Application 传递数据
- android通过剪切板传递数据
- 通过手势实现数据传递
- Android通过剪切板传递数据
- [Android]通过意图传递数据
- Android通过Intent传递数据
- 拷贝CString到Clipboard和从Clipboard得到数据
- 拷贝CString到Clipboard和从Clipboard得到数据
- ClipBoard
- Clipboard
- 用 WebDAV 通过 Web 传递 XML 数据
- 通过WM_COPY进行跨进程数据传递
- LeetCode——Binary Tree Preorder Traversal
- WebService接口与HTTP接口的联系
- finish()不能是应用程序完全退出,下面这个方法可以
- Bluetooth 初识
- 在内核中之获取HKEY_CURRENT_USER对应路径
- 通过Clipboard传递数据
- how to get rid of the UITabBarItem padding
- openerp学习笔记 数据合法性约束(对象约束+数据库约束)
- jffs2,yaffs2,logfs,ubifs文件系统性能分析
- AndroidStudio中的包管理
- java:快速文件分割及合并
- ubifs文件系统的移植
- HDU 1281 棋盘游戏
- Android中自定义样式与View的构造函数中的第三个参数defStyle的意义