標籤:
使用剪下板傳遞資料,可以傳遞簡單的資料,也可以傳遞可序列化的對象。
首先來個簡單點吧。
首先在,mainActivity.xml檔案中加入一個button按鈕
private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // TODO Auto-generated method stub button = (Button)this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @SuppressLint("NewApi") @Override public void onClick(View v) { // TODO Auto-generated method stub // 第一種情況:剪下板傳遞常用類型資料// ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);//從android系統中調用剪下板服務// String name = "jack";// clipboardManager.setText(name);// Intent intent = new Intent(MainActivity.this,OtherActivity.class);// startActivity(intent); // 第二種情況:剪下板傳遞可序列化對象 MyData mydata = new MyData("jack","beijing"); //把對象轉化成字串 ByteArrayOutputStream byteArrayOutPutStream = new ByteArrayOutputStream(); String baseString = ""; try { ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutPutStream); objectOutputStream.writeObject(mydata); baseString = Base64.encodeToString(byteArrayOutPutStream.toByteArray(), Base64.DEFAULT); objectOutputStream.close(); } catch (Exception e) { // TODO: handle exception } ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText(baseString); Intent intent = new Intent(MainActivity.this,OtherActivity.class); startActivity(intent); } }); }
在此之前當然需要建立一個對象了,建立MyData.java
package com.example.android_intent3;import java.io.Serializable;public class MyData implements Serializable { private String age; private String name; public MyData(String age, String name) { super(); this.age = age; this.name = name; } @Override public String toString() { return "MyData [age=" + age + ", name=" + name + "]"; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public MyData() { // TODO Auto-generated constructor stub }}
當然也需要在mainActivity.xml檔案中加入一個button
<Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="使用剪下板傳遞資料" />
還需要在建立一個布局檔案other.xml檔案加入:
<TextView android:id="@+id/msg" android:layout_width="fill_parent" android:layout_height="fill_parent"></TextView>
對了,還得建立OtherActivity.java檔案,加入:
private TextView textView; public OtherActivity() { // TODO Auto-generated constructor stub } @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); //第一種情況// textView = (TextView)this.findViewById(R.id.msg);// ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);// String msgString = clipboardManager.getText().toString(); //textView.setText(msgString); //第二種情況 textView = (TextView)this.findViewById(R.id.msg); //擷取Android剪下板服務 ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); //擷取剪下板裡的資料 String msgString = clipboardManager.getText().toString(); //解碼 byte[] base64_byte = Base64.decode(msgString, 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 } }
最後,當然不能忘了,在資訊清單檔中加入OtherActivity.java.
<activity android:name=".OtherActivity"></activity>
Android 使用剪下板傳遞資料