Android 使用剪贴板传递简单数据及复杂数据的方法

传递数据的场景在于不同页面之间跳转,需要携带数据:简单数据值指的是String, int等数据, 复杂数据指的是类

1.   使用剪贴板传递简单数据方法:

第一个页面里面放数据操作如下:

1   ClipboardManager clipboardManager = (ClipboardManager);
2   getSystemService(Context.CLIPBOARD_SERVICE);
3   String text = "简单数据";
4   clipboardManager.setText(text);
5   Intent intent = new Intent(this, OtherActivity.class);
6   startActivity(intent);

第二个页面里面取数据操作如下:

  Intent intent = getIntent();
  textView = findViewById(R.id.msgText);
  myApp = (MyApp) getApplication();
  textView.setText("after changed :" + myApp.getText());

其中MyApp是一个类文件,里面如下:

public class MyApp extends Application {

    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

}

在manifest文件中加入MyApp类:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.xxx.globalvariables">

    <application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".OtherActivity"></activity>
    </application>

</manifest>

2.  使用剪贴板传递复杂数据传递方法

第一个页面存数据的操作如下:

 // 方法二:剪贴板传递复杂数据
        MyData myData = new MyData("jack", 24);
        // 将对象转换为字符串
        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 (IOException e) {
            e.printStackTrace();
        }
        ClipboardManager clipboardManager1 = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        clipboardManager1.setText(base64String);
        Intent intent1 = new Intent(this, OtherActivity.class);
        startActivity(intent1);

第二个页面取数据的方法:

            Intent intent = getIntent();
       ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
            String msg = clipboardManager.getText().toString();
            ClipBoardTextView = findViewById(R.id.ClipBoardMsgText);
       // 解码
            byte[] base64_byte = Base64.decode(msg, Base64.DEFAULT);
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);
            ObjectInputStream objectInputStream = null;
            try {
                objectInputStream = new ObjectInputStream(byteArrayInputStream);
                MyData myData = (MyData) objectInputStream.readObject();

                ClipBoardTextView.setText(myData.toString());
            } catch (Exception e) {
                e.printStackTrace();
            }

MyData是一个类, 里面包括name, age 的get方法和toString()方法, 该类需要实现

Serializable

备注:由于该类为普通类, 没有继承
Application, 所以不用再manifest文件中配置!


原文地址:https://www.cnblogs.com/leavescy/p/8311623.html

时间: 2024-10-09 20:27:01

Android 使用剪贴板传递简单数据及复杂数据的方法的相关文章

Android开发之一种简单的异步加载图片方法

首先说明的是,该方法已经被我抛弃了.之前用它,发现加载速度不好.具体没怎么细心的看. 现在我用volley了.拿出来只是给大家批判的. package com.souya.seller.util.ex; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.lang.ref.SoftReference; import java.util.HashMap; impor

Android Bundle传递简单数据、对象数据

Android开发过程中进程遇到组件之间.进程之间等数据的传递,数据传递有很多种,其中使用Bundle传递非常方便. Bundle可以传递多种数据,是一种类似map的key-value数据结构 简单的调用如下所示 Bundle bundle=new Bundle(); bundle.put***(key,value) 但是有时候需要我们传递一个对象,做法就是先把该对象使用serializable序列化 public class Book implements Serializable{ } 然后

Android剪切板传递数据传递序列化对象数据

一.剪切板的使用介绍 1. 剪切板对象的创建 使用剪切板会用到,ClipboardManager对象,这个对像的创建不可以使用构造方法,主要是由于没有提供public的构造函数(单例模式),需要使用Activity.getSystemService(Context.CLIPBOARD_SERVICE)获取该对象.  2. 对象调用的主要方法介绍 在Android-11(Android 3.0)版本之前,利用剪切板传递数据使用setText()和getText()方法,但是在此版本之后,这两个方法

android进程间共享简单数据

我们知道,在android中,保存简单的数据最方便的就是使用SharedPreferences,然而,SharedPreferences虽然说也可以设置成进程间共享数据,但是并不可靠(更致命的是,不同级别的应用是无法使用SharedPreferences进行共享的,比如,普通应用无法读取系统应用的SharedPreferences数据). 那如何才能进行简单数据的跨进程共享呢,Settings.System可以很方便的进行跨进程共享数据,使用凡是也很简单: //往系统配置表里添加自定义数据 Se

Android中在两个Activity之间进行数据传递

首先声明,此篇文章是我原先的CSDN上面的博客,由于种种原因,不想再使用csdn博客,于是就将其文章搬至现在的cnblog. 大家好,今天我终于开通了自己的博客,很开心能和大家共同分享我的学习经验,希望我们可以共同进步哦,废话不多说了,看一下我今天学习android遇到的一些问题和解决办法吧 首先先把我使用的eclipse的版本贴出来:adt-bundle-windows-x86-20130917 这是一个集成的版本,不需要配置SDK和ADT,但是需要手动配置JDK哦! 其实,不同版本的ecli

打造android ORM框架opendroid(四)——优雅的删除数据

在上一篇博客<打造android ORM框架opendroid(三)--持久化数据>中,我们感受到了opendroid保存数据的流程,今天的博客我们来顺一下opendroid是如何删除数据的. 还记得我们在第一篇博客<打造android ORM框架opendroid(一)--ORM框架的使用>中介绍过opendroid的使用,先来回顾一下怎么利用opendroid来删除数据吧. int length = OpenDroid.delete(Student.class, 1, 2, 3

Android基础之——startActivityForResult启动界面并返回数据,上传头像

在android应用的开发过程中,经常会出现启动一个界面后填写部分内容后带着数据返回启动前的界面,最典型的应用就是登录过程.在很多应用程序的模块中,都有"我的"这个模块,在未登录状态下点击其中的某一项,就会弹出登录界面,登录完成后回到我的界面,会显示一些登录后的数据,这个功能的实现就要用到startActivityForResult. 下面通过一个小demo来说明一下startActivityForResult的使用,以及在实际开发中的一些应用. demo的效果图如下: 主界面布局:

Android高手之路之Android中Intent传递对象的两种方法Serializable,Parcelable

注:本文改编自Android_Tutor的文章,原文地址:http://blog.csdn.net/android_tutor/article/details/5740845 Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者的使用场景和区别: 1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelab

【转】Android Touch事件传递机制解析

原文地址:http://www.cnblogs.com/runssnail/p/4250549.html 说明:本文在原文地址上有所改动 一.小故事 在讲正题之前我们讲一段有关任务传递的小故事,抛砖迎玉下: 话说一家软件公司,来一个任务,分派给了开发经理去完成 开发经理拿到,看了一下,感觉好简单,于是 开发经理:分派给了开发组长 开发组长:分派给了自己组员(程序员) 程序员:分派给了自己带的实习生. 实习生:好苦逼,无法分派,怎么办啊?只能自己干了 但是实习生能不能做好,有两种情况了. 情况一: