您的位置:首页 > 移动开发 > Android开发

Android通过剪切板传递数据

2015-12-07 15:39 615 查看
Demo为两个Activity,一个界面有一个button,另一个界面有一个textview,在第一个Activity中声明一个MyData对象,将此对象传到第二个Activity中并在textview中展示出来。

本文参照老罗的视频实现

应用如下:



MyData.java


package com.zhangkaiyue.laoluodemo;

import java.io.Serializable;

/**
* Created by zhangkaiyue on 12/7/15.
*/
public class MyData implements Serializable {
private String name;
private int age;

public MyData(String name, int age) {
this.name = name;
this.age = age;
}

@Override
public String toString() {
return "MyData{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}


MainActivity.java


package com.zhangkaiyue.laoluodemo;

import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.view.View;
import android.widget.Button;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

import butterknife.Bind;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {

@Bind(R.id.button)
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//从android系统中调用剪切板服务
MyData data = new MyData("zhangsi", 9);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
String base64String = "";
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(data);
base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData.Item item = new ClipData.Item(base64String);
ClipData clipData = ClipData.newPlainText("label", "zhangsan");
clipData.addItem(item);
clipboardManager.setPrimaryClip(clipData);
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
startActivity(intent);
}
});
}
}


OtherActivity.java


package com.zhangkaiyue.laoluodemo;

import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.widget.TextView;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

import butterknife.Bind;
import butterknife.ButterKnife;

public class OtherActivity extends AppCompatActivity {

@Bind(R.id.textView)
TextView textView;
private MyData mMyData;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
ButterKnife.bind(this);

ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
String name1 = clipboardManager.getPrimaryClip().getItemAt(0).getText().toString();
String name = clipboardManager.getPrimaryClip().getItemAt(1).getText().toString();
byte[] base64_byte = Base64.decode(name, Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);
try {
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
mMyData = (MyData) objectInputStream.readObject();
} catch (Exception e) {
e.printStackTrace();
}
textView.setText(name1 + " " + mMyData.toString());

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android