关键代码:
一:Base64 将Data("Nicole",25) 加密成一个字符串baseString
// 把myData对象编码为 字符串,用Base64
String baseString = "";
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(myData);
baseString= Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
objectOutputStream.close(); // 关闭objectOutputStream
二:将字符串 txt 解码成 对象myData
//讲字符串解码为对象MyData,用Base64解码
byte [] bytes2 = Base64.decode(txt, Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes2);
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
myData = (MyData)objectInputStream.readObject();
txt = myData.toString();
----------------------------------------------------------------------------------------------------------------------------------------
案例:将MyData myData = new Data("Nicole",25) 对象 从MainActivity.java 传递到OtherActivty.java .
方法:
第一步:用Base64 将对象myData加密成一个字符串str.
第二步:将字符串str解码成 对象myData
-----------------------------------------------------------------
步骤一:Base64 将Data("Nicole",25) 加密成一个字符串str.
package com.android.myapp; import java.io.ByteArrayOutputStream; import java.io.IOException; 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.Intent; import android.util.Base64; import android.util.Base64OutputStream; import android.view.Menu; import android.view.View; import android.widget.Button; @SuppressLint("NewApi") public class MainActivity extends Activity { private Button button ; private MyData myData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub myData = new MyData("Nicole", 25); // 把myData对象编码为 字符串,用Base64 String baseString = ""; ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try { ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); objectOutputStream.writeObject(myData); baseString= Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT); objectOutputStream.close(); // 关闭objectOutputStream } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); ClipData cData = ClipData.newPlainText("label", baseString); cm.setPrimaryClip(cData); 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; } }
步骤二:Base64 将字符串txt解码为 MyData("Nicole",25);
package com.android.myapp; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.StreamCorruptedException; import android.annotation.TargetApi; import android.app.Activity; import android.content.ClipData; import android.content.ClipData.Item; import android.content.ClipboardManager; import android.os.Build; import android.os.Bundle; import android.util.Base64; import android.widget.Button; import android.widget.TextView; @TargetApi(Build.VERSION_CODES.HONEYCOMB) public class OtherActivity extends Activity { private TextView textView ; private MyData myData ; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_other); ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); ClipData cd = (ClipData)cm.getPrimaryClip(); String txt = cd.getItemAt(0).getText().toString(); //讲字符串解码为对象MyData,用Base64解码 byte [] bytes2 = Base64.decode(txt, Base64.DEFAULT); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes2); try { ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); try { myData = (MyData)objectInputStream.readObject(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } txt = myData.toString(); } catch (StreamCorruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } textView = (TextView)findViewById(R.id.msg); textView.setText(txt); } }