在Intent中,我们可以使用 putExtra(String, Bundle)来向其他的Activity传递数据,其内部提供了如下的几个类型:

EXTRA_ALARM_COUNT

用于告诉应用程序正在被调用的应用程序有多少个正在等待的警报

EXTRA_BCC

一串盲文复制的E-mail邮件地址

EXTRA_CC

一个包含应该被复制的电子邮件地址的字符串

EXTRA_CHANGED_COMPONENT_NAME

该字段将仅包含列表中的第一个名称。

EXTRA_DATA_REMOVED

指示这是否表示完全卸载(删除代码及其数据)或部分卸载(留下其数据,意味着这是更新)

EXTRA_DOCK_STATE

请求停靠状态

EXTRA_DOCK_STATE_CAR

表示手机位于汽车底座

EXTRA_DOCK_STATE_DESK

表示手机位于桌面底座

EXTRA_DOCK_STATE_UNDOCKED

表示手机在任意的底座**

EXTRA_DONT_KILL_APP

覆盖重新启动应用程序的默认操作

EXTRA_EMAIL

表示要发送的邮件的目的地址

EXTRA_INITIAL_INTENTS

使用putExtra(String,Parcelable [])设置附加活动的Intent或LabeledIntent对象的Parcelable [],以便在向ACTION_CHOOSER向用户显示时,放置选项列表的前端。

EXTRA_INTENT

描述您希望通过ACTION_PICK_ACTIVITY显示的选项

EXTRA_KEY_EVENT

包含触发创建其Intent的事件的KeyEvent对象

EXTRA_PHONE_NUMBER

表示传输的是手机号码

EXTRA_REMOTE_INTENT_TOKEN

远程的Intent传输的令牌

EXTRA_REPLACING

表示这是一个替换包

EXTRA_SHORTCUT_ICON

用于定义图标的名称

EXTRA_SHORTCUT_ICON_RESOURCE

定义截屏的图标的名称

EXTRA_SHORTCUT_INTENT

定义用于截屏的Intent

EXTRA_SHORTCUT_NAME

定义一个截图的图像名称

EXTRA_STREAM

持有与Intent相关联的数据流的URI,与ACTION_SEND一起提供正在发送的数据

EXTRA_SUBJECT

保持消息的所需主题行的常量字符串

EXTRA_TEMPLATE

用初始化的数据变量去代替改变值

EXTRA_TEXT

表示要发送一串字符序列

EXTRA_TITLE

一个CharSequence对话框标题,用于在与ACTION_CHOOSER一起使用时提供给用户

EXTRA_UID

提供包装的uid

其中我们可以使用EXTRA_TEXT 来传输文本信息,可以通过EXTRA_STREAM 以流的形式向其他的Activity传输文件,达到共享的目的。

共享的文件代码我已经封装好了一个函数:

public void shareFile(File file) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); //添加文件
        //if (file.getName().endsWith(".gz")) {
        //  intent.setType("application/x-gzip"); // 如果是gz使用gzip的mime
        //} else if (file.getName().endsWith(".txt")) {
        //  intent.setType("text/plain"); // 纯文本则用text/plain的mime
        //} else {
        //  intent.setType("application/octet-stream"); // 其他的均使用流当做二进制数据来发送
        //}
        //还可以添加更多的文件类型
        intent.setType("*/*"); //可以共享任意类型的文件
        startActivity(intent); // 调用系统中可供选择的activity以分享文件
    }