在Android开发中,要实现分享功能,可能首先想到第三方的ShareSDK,其实,想要分享一些图片,文本之类的完全没必要在App中集成第三方SDK,利用原生的SDK就可以轻松实现分享功能。

Activity的跳转方式

  众所周知,Activity的跳转方式分为两种,分别为显示跳转隐式跳转

显示跳转

  显示跳转比较简单,直接看代码

Intent intent=new Intent(MainActivity.this, OtherActivity.class);
startActivity(intent);

隐式跳转

  隐式跳转复杂一点,同样,先看下代码

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/jpeg");
startActivity(shareIntent);

可以看到隐式跳转Activity不像显示跳转那样,直接在Intent中设置类名进行跳转。隐式跳转的步骤如下

  1. 实例化Intent。
  2. 设置Action。
  3. 设置Extra(可选)。
  4. 设置类型(可选)
  5. 通过startActivity启动相应的Activity。

步骤2中的setAction(),其中需要的参数是,你要跳转的目标Activity所设置的Action,设置Action可以在AndroidManifest.xml中进行设置。setAction()中的参数就是过滤条件,决定我们跳转到哪个Activity。同样,setType()中的参数也是过滤条件,如果说setAction()是一级过滤,那么setType()则是二级过滤,过滤的更加细致。putExtra()中的参数,就是跳转到目标Activity携带的参数。

  了解过了Activity的跳转方式,下面就进入本文的重点,为软件实现分享功能。

实现分享功能

分享图片

  由于需要调用系统的Activity,所以,我们只能选择Activity的隐式跳转方式,先看下实现分享图片的代码

public static void shareImage(Context context, Uri uri, String title) {Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND);shareIntent.putExtra(Intent.EXTRA_STREAM, uri);shareIntent.setType("image/jpeg");context.startActivity(Intent.createChooser(shareIntent, title));}

这里主要说一下其中的一些参数,uri就是你要分享的图片的路径,title就是分享时显示的文字,额…,为了不让大家误解,下面看一张图,图中红框标起来的就是title


再来看一下这个代码

Intent.createChooser(shareIntent, title)

官方文档的介绍如下

Builds a new ACTION_CHOOSER Intent that wraps the given target intent, also optionally supplying a title.

上面一段话的主要意思就是,就是为目标Activity提供一个标题。

分享文本

  文本分享和图片分享大同小异,直接看代码

public static void shareText(Context context, String extraText) {Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.action_share));intent.putExtra(Intent.EXTRA_TEXT, extraText);//extraText为文本的内容intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//为Activity新建一个任务栈context.startActivity(Intent.createChooser(intent, context.getString(R.string.action_share)));//R.string.action_share同样是标题}

其中与分享图片不同的代码已经在代码中进行了注释。

实现可以被系统分享调用的App

  以上实现了,通过系统调用其他的App进行分享,那么,我们怎样让自己的App可以被系统列入可以分享的App呢?
其实很简单,只要在AndroidManifest.xml中Activity的action标签设置以下值即可

android.intent.action.SEND

看下示例代码

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

这样,在系统调用可以用来分享的App时,我们的软件就会出现在列表中了。

结束语

转载请注明出处:www.wizardev.com

Android轻松实现分享功能相关推荐

  1. React Native 轻松集成分享功能(Android 篇)

    关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...

  2. Android 实现微博分享功能

    Android 实现微博分享功能的实现,通过发送下面的intent: Intent intent = new Intent(Intent.ACTION_SEND); //启动分享发送的属性 inten ...

  3. Android微信App 分享功能调整,Android 微信SDK分享功能(1)

    转于:http://blog.csdn.net/freesonhp/article/details/10296141 ----------------------------------------- ...

  4. Android 第三方QQ分享功能实现

    QQ分享功能记录和一些获取APP签名使用工具,微信分享功能现在需要公司开发者账号了,这里就不写了. 文章目录 一.QQ互联官网 1.获取应用APPID 2.下载官方SDK 二.代码部分 1.manif ...

  5. Android Studio 微信分享功能(包括可以分享到朋友圈,分享到朋友)

    第一步:配置sdk 在build.gradle文件中,添加如下依赖即可: 在Android Studio中新建你的工程,并保证网络设置可以成功从jcenter下载微信SDK即可. dependenci ...

  6. Android 微信SDK分享功能中的最全过程步骤分析

    在前面有一章已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其中关于在自己应用分享说得很简单,本文作者也是经过一番折腾才弄成功,为了以后让大家都少走弯路,决定在这里从头到尾介绍怎么在 ...

  7. android手机nfc功能安装,Android手机NFC分享功能实测-头条网

    图一.二 名片.网址分享 温馨提示:传送文件时双方手机需处于未锁屏状态,并开启手机的NFC和Android Beam功能,有些手机的设置菜单中找不到Android Beam,是因为其功能已经内置在系统 ...

  8. android开发微信分享功能,Android编程实现微信分享信息的方法

    本文实例讲述了Android编程实现微信分享信息的方法.分享给大家供大家参考,具体如下: 随着微信越来越火,越来越多的应用要求有分享到微信的功能.虽然有很多平台都帮集成有分享功能,比如友盟.但是个人觉 ...

  9. Android实现相册分享功能,Android系统自带分享功能的实现(可同时分享文字和图片)...

     /** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题 ...

最新文章

  1. hdu 1166 敌兵布阵(树状数组)
  2. win10 安装 python报错-已安装这个产品的另一版本
  3. Training的第六天
  4. 游戏开发基础:判断碰撞(转摘)
  5. python操作excel-python操作excel
  6. Keras之小众需求:自定义优化器
  7. hbuilder打包ios_免费获得苹果证书,HBuilderX打包IPA文件
  8. Hadoop之企业案例分析
  9. 确定最佳聚类数matlab代码_详解DBSCAN聚类
  10. 使用vSphere Web Client导出/导入/还原分布式交换机配置(2034602)
  11. RADIO控件变量添加
  12. bzoj3456:城市规划
  13. 编程基本功:注释不是工作的一部分,是程序员赠送给公司的
  14. 计算机底部怎么不显示网络连接图标不见了,电脑任务栏不显示网络连接图标怎么办...
  15. centos 安装 fortran
  16. 使用idea格式化xml中的SQL
  17. 消息队列MQ技术的介绍和原理
  18. PDF加密如何批量解除
  19. 您需要计算机管理员提供的权限才能更改,您需要管理员权限才能删除此文件夹...
  20. 图片加载oom以及photoView缩放崩溃问题

热门文章

  1. php 预编译,预编译的prepare statements 管理, 实现和思路
  2. Part 2 如何进行埋点(内附埋点文档模板)
  3. 微服务架构深度解析与最佳实践-第一部分:微服务发展历程和定义
  4. PCB芯片散热焊盘如何设计?
  5. 戴尔服务器安装ESXI
  6. LaTeX代码: 表格 ← 利用 tabular
  7. 人际关系和心理活动机制总结 -- 宁向东的清华管理学课总结
  8. 【零基础跑项目】20代码教你基于opencv的人脸检测
  9. 使用扩展卡尔曼滤波(EKF)进行AHRS九轴姿态融合
  10. 解决Redis问题:JedisConnectionException: Could not get a resource from the pool