Android 分享
来源:互联网 发布:多少人得空调病 数据 编辑:程序博客网 时间:2024/06/06 09:43
Android 分享 - 向其它 App 发送数据
目录(?)[+]
一般 Android 应用中都会有分享功能,可以将一些内容通过社交平台分享给自己的朋友,通常可以用友盟或者bmob等专门的分享平台来做,但 Android 其实也内置了分享功能。
看文档的意思内置分享功能貌似只能分享到手机上已安装 App 平台上,不能分享如微博、QQ空间等平台,如果有这种需求,就不适用了。
向其它 App 发送简单数据
发送文本内容
ACTION_SEND 最常用的功能估计就是从一个 Activity 向另一个 Activity 发送文本内容了。例如,内置的浏览器应用就可以分享当前浏览网页的 URL 给其它应用。这在通过邮件或社会化网络向朋友分享一篇文章或站点时会很有用,下面是个示例:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
如果只有一个应用的 filter 能匹配上 ACTION_SEND 并且其 MIME 类型是 text/plain,系统会运行该应用;如果超过一个应用符合条件,系统将运行一个对话框供用户选择运行哪一个应用。
然而,如果你以 Intent 对象为参数调用 Intent.createChooser() 方法,系统总是会显示应用选择器,这种方式有几个优势:
- 即使用户为该 Intent 选择了默认应用,选择器仍然会弹出
- 如果没有匹配的应用,Andorid 会显示一条系统消息
- 你可以为选择器对话框指定一个标题
下面是修改后的代码
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
另外,你也可以附带一些额外的数据:EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC, EXTRA_SUBJECT,如果接收应用没有设计如何使用它们,这些数据将会被忽略。
发送二进制内容
二进制内容也可以通过 ACTION_SEND 来分享,这需要设置正确的 MIME 类型,并将数据 URI 对象放到名字为 EXTRA_STREAM 的额外数据中。这通常会用在分享图片的时候,但实际上这种方式可以分享任意的二进制数据。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
需要注意以下几点:
- 你可以设置 MIME 为“*/*”,但这样只会匹配能处理通用数据流的 activities
- 略
发送多个数据
如果要一次性分享多个数据,需要使用 ACTION_SEND_MULTIPLE 的 action 并携带一个以多个数据 URI 为元素的 list 对象。MIME 类型根据你要分享的内容来定,例如,如果要分享3个 JPEG 图片,则 MIME 类型仍然是“image/jpeg”;如果是混合的图片,则类型为“image/*”以匹配能处理任意类型图片的 Activity;你应该只在分享多种文件类型时设置为“*/*”。
下面是示例程序:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
快速分享
在 Android 4.0(API 14) 以上版本在 ActionBar 上通过 ActionProvider 实现一个快速分享是很容易的事,在使用 ShareActionProvider 时,你只需要提供分享意图,它会帮你完成接下来的工作。
注意: ShareActionProvider 只能在 API 14及以上版本中使用。
菜单定义
要使用 ShareActionProvider,只需要在菜单资源文件中相应的菜单项 中定义 android:actionProviderClass
属性,如下代码所示:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
除了上面的代码,还需要指定要分享的内容。
设置分享意图
为了让 ShareActionProvider 正常工作,你需要提供一个分享意图(Intent),该意图与上面提到分享 Intent 的一样,带有 ACTION_SEND action 及EXTRA_TEXT 和 EXTRA_STREAM 等额外数据。
要指派分享 Intent,首先找到对应的 MenuItem;接下来调用 MenuItem.getActionProvider() 方法获取到 ShareActionProvider 实例;最后分享动作中调用 setShareIntent() 方法完成分享。
下面是示例程序:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
更多关于 ShareActionProvider 的讨论,请参考 Action Views and Action Providers 。
参考
- Sharing Simple Data
- Sending Simple Data to Other Apps
- 【Android】分享
- android分享
- android 分享
- android 分享
- android 分享
- Android分享
- Android分享
- Android 分享
- android分享支付经验分享
- Android的Ril分享
- Android模拟器介绍 分享
- Android蓝牙经验分享
- 分享一些android题目
- Android学习资料分享
- Android PowerManager.WakeLock分享
- Android 分享功能
- android 使用分享功能
- Android开发资料分享
- 你想要的CacheUtils
- 为什么 Android 中 Toolbar.setTitle() 没有效果
- LeetCode 22 Generate Parentheses
- Vladik and Courtesy
- linux crontab 重复执行
- Android 分享
- 安卓实用工具
- jQuery中宽、高、位置和滚动条总结
- lcd参数解释及计算
- APK空包签名
- Android主题与Toolbar样式之间的关系
- Eclipse导入git上的maven web项目 部署
- caffe:math_functions 分析
- 初始化列表