今天,简单讲讲如何调用手机的分享功能进行分享。

目前实现一键分享功能的方式有两种:
1.需要集成第三方官方SDK包,在获得官方授权后调用其API来完成一键分享功能,例如使用友盟分享等
    优点:无缝集成,功能多
    缺点:需要集成官方的SDK包并通过申请官方的授权才可进行开发
2.不需要使用任何第三方SDK包,可以直接调起实现了分享功能的应用的activity来进行分享
    优点:不需要使用任何第三方SDK包和申请官方授权
    缺点:需要手机安装你需要分享的应用(这一点非常重要,一开始测试的时候一直不成功,提示“没有应用可执行此操作”,后来找了很久才发现是我手机没有安装相对应的应用,这也是不好方便的地方)

效果图:

package com.xiaolijuan.sharedome;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.RelativeLayout;import java.io.File;
import java.util.ArrayList;/*** 项目名称:ShareDome* 类描述:* 创建人:xiaolijuan* 创建时间:2016/1/13 23:48*/
public class ShareActivity extends Activity implements View.OnClickListener {private RelativeLayout mRlShareText, mRlShareSingleimage, mRlShareMultipleimage, mRlShareQQ, mRlShareTencent, mRlShareWechat, mRlShareMicroblog, mRlShareOther;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_share);bindView();}private void bindView() {mRlShareText = (RelativeLayout) findViewById(R.id.rl_share_text);mRlShareSingleimage = (RelativeLayout) findViewById(R.id.rl_share_singleimage);mRlShareMultipleimage = (RelativeLayout) findViewById(R.id.rl_share_multipleimage);mRlShareQQ = (RelativeLayout) findViewById(R.id.rl_share_qq);mRlShareTencent = (RelativeLayout) findViewById(R.id.rl_share_qqtencent);mRlShareWechat = (RelativeLayout) findViewById(R.id.rl_share_wechat);mRlShareMicroblog = (RelativeLayout) findViewById(R.id.rl_share_microblog);mRlShareOther = (RelativeLayout) findViewById(R.id.rl_share_other);mRlShareText.setOnClickListener(new ShareText());mRlShareSingleimage.setOnClickListener(new ShareSingleImage());mRlShareMultipleimage.setOnClickListener(new ShareMultipleImage());mRlShareQQ.setOnClickListener(this);mRlShareTencent.setOnClickListener(this);mRlShareWechat.setOnClickListener(this);mRlShareMicroblog.setOnClickListener(this);mRlShareOther.setOnClickListener(this);}//分享文字至所有第三方软件public class ShareText implements View.OnClickListener {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setAction(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_TEXT, "这里是分享内容");intent.setType("text/plain");//设置分享列表的标题,并且每次都显示分享列表startActivity(Intent.createChooser(intent, "分享到"));}}//分享单张图片至所有第三方软件public class ShareSingleImage implements View.OnClickListener {@Overridepublic void onClick(View v) {String imagePath = Environment.getExternalStorageDirectory() + File.separator + "13e277bb0b9c2e3ab90229463357bf40.jpg";//由文件得到uriUri imageUri = Uri.fromFile(new File(imagePath));Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND);shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);shareIntent.setType("image/*");startActivity(Intent.createChooser(shareIntent, "分享到"));}}//分享多张图片至所有第三方软件public class ShareMultipleImage implements View.OnClickListener {@Overridepublic void onClick(View v) {ArrayList<Uri> uriList = new ArrayList<>();String path = Environment.getExternalStorageDirectory() + File.separator;uriList.add(Uri.fromFile(new File(path+"13e277bb0b9c2e3ab90229463357bf40.jpg")));uriList.add(Uri.fromFile(new File(path+"869895e73ddd710e8a132afb37461bf0.jpg")));uriList.add(Uri.fromFile(new File(path+"4753fc4cd47aa1833c70df4c08f4b7fa.jpg")));uriList.add(Uri.fromFile(new File(path+"355ee87cf0ff612331a790f31b3ad113.jpg")));uriList.add(Uri.fromFile(new File(path+"ce61ad4d44e3099d87040f38faabbf56.jpg")));Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);shareIntent.setType("image/*");startActivity(Intent.createChooser(shareIntent, "分享到"));}}@Overridepublic void onClick(View v) {String pakName = "";Intent intent = new Intent(Intent.ACTION_SEND); // 启动分享发送的属性intent.setType("text/plain"); // 分享发送的数据类型switch (v.getId()) {case R.id.rl_share_qq:pakName = "com.qzone";  //qq空间break;case R.id.rl_share_qqtencent:pakName = "com.tencent.WBlog"; //腾讯微博break;case R.id.rl_share_wechat:pakName = "com.tencent.mm";  //微信break;case R.id.rl_share_microblog:pakName = "com.sina.weibo";  //微博break;case R.id.rl_share_other:break;default:break;}intent.setPackage(pakName);intent.putExtra(Intent.EXTRA_TEXT, "这里是分享内容"); // 分享的内容this.startActivity(Intent.createChooser(intent, ""));// 目标应用选择对话框的标题;}
}

由于分享功能是使用隐式调用Activtiy实现的,则需在响应的Activity中声明intent-filter,在对应的activity的xml里加上

<intent-filter><action android:name="android.intent.action.SEND" /><category android:name="android.intent.category.DEFAULT" />
</intent-filter>

这上面的代码可以分享图片,文本内容到手机安装的能分享的软件,包括QQ,微信。但是,如果分享视频时,会发现无法分享到QQ里,这是因为视频只能单个分享,一次只能分享一个视频,所以需要修改代码。

把分享图片的

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "分享到"));

修改为

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);            //分享视频只能单个分享
shareIntent.putExtra(Intent.EXTRA_STREAM, “视频的URI”);
shareIntent.setType("audio/*");
startActivity(Intent.createChooser(shareIntent, "分享到"));

源码下载:http://download.csdn.net/detail/bzlj2912009596/9876105

android 分享图片和视频就讲完了。

就这么简单。



android 分享图片和视频相关推荐

  1. Android原生分享图片和视频

    前言 由于之前的分享的平台都是固定的:微信,微信朋友圈,QQ,微博- 分享的做法就是,用列表分别显示各个平台,然后点击某个选项跳转到对应平台 代码如下: private void share(File ...

  2. Android 分享图片到WhatsApp,Messenger,Facebook

    Android 分享图片到WhatsApp,Messenger,Facebook 简单实现通过Intent 跳转传参数 简单实现通过Intent 跳转传参数 Intent shareIntent = ...

  3. unity调用 Android 分享图片文字 方法 不需要第三方sdk 兼容android7.0+

    直接说方法把,在Android Studio中 新建一个工程,新建时选择Add No Activity,包名跟unity中设置的一样比如这里用 come.demo.share 在res目录下新建个文件 ...

  4. android分享图片到qq,Android 如何实现本地图片直接分享到微信、来往、QQ等,直接分享...

    在不使用第三方的SDK情况下,如何在Android上直接分享图片到指定的应用上,例如分享到微信.来往.QQ等.具体实现见贴出的代码.实现后才发现好简单的 例如:要在app中直接分享图片到微信.来往等, ...

  5. android 静态图片gif视频轮流播放

    最近做了一个关于广告视频的项目,双屏异显,并且在数千台广告屏上运行这个APP,而且要同步,核心的功能是图片gif视频轮流播放的功能,在此做个总结: 1.静态图片gif视频轮播: 我用的都是原生的插件, ...

  6. android 录制图片、视频插入系统相册视频相册列表中,视频mediaPlayer静音和mediaPlayer恢复静音,SurfaceView+mediaplayer视频播放,自定义任意view显示

    video_duration = mediaPlayer.getDuration() / 1000 video_duration需要在prepare()监听中进行初始化 通知系统,将图片.视频更新到系 ...

  7. Android 实现图片、视频即时更新到相册

    照片更新到相册:                          用此方法即可.一行代码. sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_ ...

  8. Android 调用系统分享图片、视频等文件

    目录 序言 打开文件管理器 分享操作 文件Uri转化为String 序言 一般都会集成Umeng的分享,基本的分享都可以满足,但是要想分享文件,比如pdf.doc.ppt等类型时,umeng就不能满足 ...

  9. android分享图片到qq,Android实现截图分享qq,微信

    Android实现截图分享qq,微信 立即下载 金额: 3 元 支付方式: 友情提醒:源码购买后不支持退换货 立即支付 发布时间:2018-05-23 概述 android上封装工具类,一行实现截屏分 ...

最新文章

  1. python调用sklearn中朴素贝叶斯踩坑
  2. 解决Redis缓存雪崩、穿透、并发、预热、击穿、热点Key等问题
  3. java获取列族的列_在cassandra-cli中如何获取表中的所有列名以及如何在java中使用hector获取它?...
  4. 用tomcat6修改java内存_Tomcat 服务器内存修改
  5. resnet34\resnet101网络结构图
  6. python的空语句_Python 函数返回空值
  7. 计算机主机hdmi接口是什么意思,hdmi接口有什么用,教您电脑hdmi接口有什么用
  8. raid硬盘速度测试软件,RAID 0模式下固态硬盘性能测试
  9. 苹果手机上网速度慢_手机为什么下载速度很慢(揭晓手机下载速度慢的原因)...
  10. 【技术贴】关于IE主页被篡改、假IE的根治方法。。。
  11. 翼支付门户CAS单点登录相关介绍
  12. win11本地用户和组找不到的解决办法
  13. 命题, 定理,引理和推论的定义
  14. 如何使用 CSS flex box 和 Javascript 设计棋盘
  15. js 地理位置查询经纬度定位地图
  16. 存储网络RDMA:NVME over RDMA
  17. 分布式技术-Zookeeper
  18. 批量替换文本中的多组字符串
  19. 将samba加入到windows域
  20. 排序算法(不定时更新~)

热门文章

  1. java 面向对象 — 继承
  2. Hadoop学习笔记—11.MapReduce中的排序和分组
  3. (一)初识java ---我的第一个java程序
  4. linux -- supervitord怎么杀出主进程派生出来的子进程。
  5. TFBOY 养成记 一些比较好多文章。
  6. Front End Developer Questions 前端开发人员问题(三)JavaScript部分
  7. STM32F0xx_SPI读写(Flash)配置详细过程
  8. S3C2440时钟系统详解
  9. 【转】Maya Mel – Search String in String
  10. asp.net 返回超时的解决方法