在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以分享文件
}