Android 分享操作(1)------分享数据

一.分享数据

分享文本数据:

  ACTION_SEND最直接常用的地方是从一个Activity发送文本内容到另外一个Activity。例如,Android内置的浏览器可以将当前显示页面的URL作为文本内容分享到其他程序。这一功能对于通过邮件或者社交网络来分享文章或者网址给好友而言是非常有用的。

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);

  如果为intent调用了Intent.createChooser(),那么Android总是会显示可供选择。这样有一些好处:

  • 即使用户之前为这个intent设置了默认的action,选择界面还是会被显示。
  • 如果没有匹配的程序,Android会显示系统信息。
  • 我们可以指定选择界面的标题。
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to));

  效果图如下:
  

分享二进制文件

分享二进制文件(如图片)也是类似的:分享二进制的数据需要结合设置特定的MIME类型,需要在EXTRA_STREAM`里面放置数据的URI,下面有个分享图片的例子,该例子也可以修改用于分享任何类型的二进制数据:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to));

发送多块内容(Send Multiple Pieces of Content)

  为了同时分享多种不同类型的内容,需要使用ACTION_SEND_MULTIPLE与指定到那些数据的URIs列表。MIME类型会根据分享的混合内容而不同。例如,如果分享3张JPEG的图片,那么MIME类型仍然是image/jpeg。如果是不同图片格式的话,应该是用image/*来匹配那些可以接收任何图片类型的activity。如果需要分享多种不同类型的数据,可以使用*/*来表示MIME。像前面描述的那样,这取决于那些接收的程序解析并处理我们的数据。需要保证有URL的访问权限。

ArrayList<Uri> imageUris = new ArrayList<Uri>();
imageUris.add(imageUri1); // Add your image URIs here
imageUris.add(imageUri2);

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share images to..")); 

二.接收数据

1.更新我们的manifest文件

  主要是设置intent fliters来告诉系统愿意接收那些数据。

2.处理接受到的数据

  数据通过Intent传输,所以通过调用getIntent()方法来获取到Intent对象。拿到这个对象后,我们可以对其中面的数据进行判断,从而决定下一步行为。

void onCreate (Bundle savedInstanceState) {
    ...
    // Get intent, action and MIME type
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            // Handle text being sent
        } else if (type.startsWith("image/")) {
            // Handle single image being sent
        }
    } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
        if (type.startsWith("image/")) {
            // Handle multiple images being sent
        }
    } else {
        // Handle other intents, such as being started from the home screen
    }
    ...
} 

 

 

时间: 08-18

Android 分享操作(1)------分享数据的相关文章

Android开发操作案例分享!

Android LRecyclerView 操作案例分享-实现下拉刷新.滑动到底部自动加载,一直想抽空写下这个开源项目www.itxdl.cn,但是各种原因没有抽时间,今天还是趁着工作间隙写下了这篇博客,与大家分享. 简介 LRecyclerView是支持addHeaderView. addFooterView.下拉刷新.分页加载数据的RecyclerView. 它对 RecyclerView 控件进行了拓展,给RecyclerView增加HeaderView.FooterView,并且不需要对

Android LRecyclerView 操作案例分享-实现下拉刷新、滑动到底部自动加载

一直想抽空写下这个开源项目,但是各种原因没有抽时间,今天还是趁着工作间隙写下了这篇博客,与大家分享. 简介 LRecyclerView是支持addHeaderView. addFooterView.下拉刷新.分页加载数据的RecyclerView. 它对 RecyclerView 控件进行了拓展,给RecyclerView增加HeaderView.FooterView,并且不需要对你的Adapter做任何修改. 主要功能 下拉刷新.滑动到底部自动加载下页数据: 可以方便添加Header和Foot

[转]Android开源项目收藏分享

转自:http://blog.csdn.net/dianyueneo/article/details/40683285 Android开源项目分类汇总 如果你也对开源实现库的实现原理感兴趣,欢迎 Star 和 Fork 14884(入群理由必须填写群简介问题答案)4489 63224677(三群已满) 欢迎大家推荐好的Android开源项目,可直接Star.Fork :) 对你有帮助的话,顺手去知乎点个赞吧: 目前包括: ActionBar.ViewPager.GridView.Progress

android 集成系统分享和第三方分享案例

现在很多的应用基本都会集成分享这个功能,该功能包括系统分享(比如邮件,短信)和第三方分享(比如QQ和微信).其中有些公司会选择使用第三方的库来简化这些操作,加快开发,用的比较多的比如友盟社会化分享SDK,缺点就是自由度太低,因为可能你仅仅只是需要QQ和微信,其他的公司就会选择自己导入所需要的第三方SDK来自定义分享功能,自由度高,于是这篇博客主要来介绍后一种自定义分享功能的案例demo,下图是demo的运行效果: 具体分析一下源码,由于分享的内容根据需求的不同而不同,为了简单起见,我们就以最常用

在Android中如何实现分享功能

Android应用中能很方便的完成这些功能,很多的应用中都有"分享"功能?如何分享呢?下面给大家说说看.最近有人问到Android分享功能用那个比较好,使用Android开发自带的Intent来进行分享还是借助第三方呢,直接上代码: 一.使用Intent直接和第三方应用进行通信: /** * 分享功能 * * @param context *            上下文 * @param activityTitle *            Activity的名字 * @param

Android使用sharesdk一键分享

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 本文是如下文献相关内容的总结: 1.<TCP/IP详解 卷1> 2.<TCP/IP协议族>     3.<计算机网络第5版>     OSPF(Open Shortest Path First开放最短路径优先 )是一种IGP(内部网关协议)协议,主要用于AS(自治系统内部).该协议是一种基于链路状态的协议,而RIP则是基于距离向量的协议,在两者的底层实现算法中,RIP采用的是Bellman-Ford算法(贝尔曼福特算法

Android开发:实现分享给微信好友以及出现闪退的问题

转载烦请注明本文出处~ 1.申请微信APPID 要实现分享到微信的功能,首先要到微信开放平台申请一个APPID.但在申请APPID的时候需要填写一个应用签名和应用包名.需要注意的是包名必须与开发应用时的包名一致,应用签名也必须去掉冒号而且字母为小写. 2.应用签名的获取 开发android应用的人很多,很有可能类名.包名起成了同一个名字,签名这时候就起到区分的作用. 所有的Android应用都必须有数字签名,不存在没有数字签名的应用,包括模拟器运行的.模拟器开发环境,开发时,通过ADB接口上传的

Android——QQ登录、分享

写在前面的话 应用要接入QQ登录,分享,需要在QQ的开发者平台上进行提交应用,并且审核通过,应用已经获取到appId. 相关jar包下载地址:http://download.csdn.net/detail/sapce_fish/9570936 也可到官网下载: http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 将 open_sdk_r5509.jar,mta-sdk-1.6.2.jar两个jar包引进自己的项目中 第一步:在Man

最实用的Android开发学习路线分享

Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随着Android进一步发展慢慢体现!下面针对Android培训开发设定了一条Android开发最佳学习路线: 学习基础开发语言 学习基础开发语言是针对零基础学员学习Android开发课程设定的,当然了Android开发环境配置是最为根本的,需要根据环境需要,配置android开发环境.在配置好And