Android剪切板传递对象

来源:互联网 发布:网络舆情管理工作制度 编辑:程序博客网 时间:2024/04/29 08:43

需要传递MyData对象

MyData.java

package com.example.android_intent3;import java.io.Serializable;public class MyData implements Serializable {private String name;private int age;public MyData(String name, int age) {super();this.name = name;this.age = age;}@Overridepublic String toString() {return "MyData [name=" + name + ", age=" + age + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

新建一个MyData对象,将其转换为字符串

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                String base64String = "";
                try {
                    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
                    objectOutputStream.writeObject(mydata);
                    base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
                    objectOutputStream.close();
                } catch (Exception e) {
                    // TODO: handle exception
                }

再将得到的base64String当成字符串传递给另一个activity就可以了。


MainActivity.java

package com.example.android_intent3;import java.io.ByteArrayOutputStream;import java.io.ObjectOutputStream;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ClipData;import android.content.ClipboardManager;import android.content.Context;import android.content.Intent;import android.util.Base64;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;@SuppressWarnings("deprecation")public class MainActivity extends Activity {private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button)findViewById(R.id.button1);        button.setOnClickListener(new OnClickListener() {        @SuppressLint("NewApi")@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub        //简单的通过剪切板传递字符串数据//ClipboardManager clipboarmanager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);//String name = "matrix";//clipboarmanager.setPrimaryClip(ClipData.newPlainText("data", name));//Intent intent = new Intent(MainActivity.this,OtherActivity.class);//startActivity(intent);        //通过剪切板传递对象数据        MyData mydata = new MyData("matrix",21);        //将对象转换成字符串        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();        String base64String = "";        try {ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);objectOutputStream.writeObject(mydata);base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);objectOutputStream.close();        } catch (Exception e) {// TODO: handle exception}        ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);        clipboardManager.setPrimaryClip(ClipData.newPlainText("data", base64String));        Intent intent = new Intent(MainActivity.this,OtherActivity.class);        startActivity(intent);        }});    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    }

OtherActivity.java

package com.example.android_intent3;import java.io.ByteArrayInputStream;import java.io.ObjectInputStream;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ClipData;import android.content.ClipboardManager;import android.content.Context;import android.os.Bundle;import android.util.Base64;import android.widget.TextView;public class OtherActivity extends Activity {private TextView textview;@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_other);textview = (TextView)findViewById(R.id.textview1);//通过剪切板获取单纯的数据字符串//ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);//ClipData clipData =clipboardManager.getPrimaryClip();//String name = clipData.getItemAt(0).getText().toString();//textview.setText(name);//通过剪切板获取对象ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);ClipData clipData =clipboardManager.getPrimaryClip();String name = clipData.getItemAt(0).getText().toString();byte[] base64_byte = Base64.decode(name, 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}}}
其中 通过获得字符串得到name字符串,再将name转换MyData成对象

        byte[] base64_byte = Base64.decode(name   , 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
        }

0 0
原创粉丝点击