Android通过剪切板传递数据

来源:互联网 发布:greenvpn软件下载 编辑:程序博客网 时间:2024/04/30 19:22

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());    }}
0 0
原创粉丝点击