Android调用系统分享功能总结
Android分享—调用系统自带的分享功能
实现分享功能的几个办法
1.调用系统的分享功能
2.通过第三方SDK,如ShareSDK,友盟等
3.自行使用各自平台的SDK,比如QQ,微信,微博各自的SDK
这里就记录下第一种办法。
分享文本信息
Intent textIntent = new Intent(Intent.ACTION_SEND);
textIntent.setType("text/plain");
textIntent.putExtra(Intent.EXTRA_TEXT, "这是一段分享的文字");
startActivity(Intent.createChooser(textIntent, "分享"));
效果如下图:

分享单张图片
String path = getResourcesUri(R.drawable.shu_1);
Intent imageIntent = new Intent(Intent.ACTION_SEND);
imageIntent.setType("image/jpeg");
imageIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));
startActivity(Intent.createChooser(imageIntent, "分享"));
分享多个文件
ArrayList<Uri> imageUris = new ArrayList<>();
Uri uri1 = Uri.parse(getResourcesUri(R.drawable.dog));
Uri uri2 = Uri.parse(getResourcesUri(R.drawable.shu_1));
imageUris.add(uri1);
imageUris.add(uri2);
Intent mulIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
mulIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
mulIntent.setType("image/jpeg");
startActivity(Intent.createChooser(mulIntent,"多文件分享"));
上面几个例子的效果都是一样的,创建一个选择器,让用户自己选择分享到哪里。
这里有一点得注意,就是通过这种方法进行分享,Intent传递的数据的Type(就是setType()方法)一定要控制好,不然会出错。(至于为什么后面说)。
其中由于是分享的res中的图片,故转变为uri,方法在这:
private String getResourcesUri(@DrawableRes int id) {
Resources resources = getResources();
String uriPath = ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
resources.getResourcePackageName(id) + "/" +
resources.getResourceTypeName(id) + "/" +
resources.getResourceEntryName(id);
Toast.makeText(this, "Uri:" + uriPath, Toast.LENGTH_SHORT).show();
return uriPath;
}
指定分享到微信
Intent wechatIntent = new Intent(Intent.ACTION_SEND);
wechatIntent.setPackage("com.tencent.mm");
wechatIntent.setType("text/plain");
wechatIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的内容");
startActivity(wechatIntent);
效果如下:

指定分享到QQ
Intent qqIntent = new Intent(Intent.ACTION_SEND);
qqIntent.setPackage("com.tencent.mobileqq");
qqIntent.setType("text/plain");
qqIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的内容");
startActivity(qqIntent);
效果如下:

博客原文:>>>> https://www.jianshu.com/p/0a0e2258b3d6
非常感谢原文作者的分享。如有侵犯,请联系作者QQ337081267删除
个人博客:http://wintp.top
补充
同时分享图片和文字
private void share(String content, Uri uri){
Intent shareIntent = new Intent(Intent.ACTION_SEND);
if(uri!=null){
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/*");
//当用户选择短信时使用sms_body取得文字
shareIntent.putExtra("sms_body", content);
}else{
shareIntent.setType("text/plain");
}
shareIntent.putExtra(Intent.EXTRA_TEXT, content);
//自定义选择框的标题
startActivity(Intent.createChooser(shareIntent, "邀请好友"));
//系统默认标题
}
之所以这种方法可以传递图片,是因为shareIntent.setType(“image/* “),而 setType(“image/* “)可以传递文字也可以传递图片;其中图片内容可以由Uri指定,注意需要将图片的url转换成uri
参考文章:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1103/1893.html
Android调用系统分享功能总结的更多相关文章
- android - 调用系统分享功能分享图片
step1: 编写分享代码, 将Uri的生成方式改为由FileProvider提供的临时授权路径,并且在intent中添加flag 注意:在Android7.0之后,调用系统分享,传入URI的时候可能 ...
- Android调用系统分享功能以及createChooser的使用
工程结构 //效果图 点击测试分享 ...
- Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博
原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...
- Android调用系统相机功能
在常规应用开发过程中,我们经常会使用到手机的相机功能,通过调用系统相机方便快捷的帮助我们实现拍照功能,本篇我将带领大家实现一下,如何通过调用系统相机实现拍照. 第一种:调用系统相机拍照,通过返回的照片 ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- Android调用系统相册和拍照的Demo
最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题 ...
- Android调用系统相机、自己定义相机、处理大图片
Android调用系统相机和自己定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,而且因为涉及到要把拍到的照片显示出来,该样例也会涉及到Android载入大图片时候的处 ...
- Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...
- 探索Android调用系统的分享功能
非常多的应用为了应用的推广和传播都会使用"分享"的功能,点击分享button.就能将想要分享的内容或者图片分享至QQ空间.微博.微信朋友圈等实现了分享功能的应用.这篇文章主要是为了 ...
随机推荐
- How to Move SSL certificate from Apache to Tomcat
https://www.sslsupportdesk.com/how-to-move-ssl-certificate-from-apache-to-tomcat/ Apache uses x509 p ...
- qt中如何用qDebug输出彩色调试信息
原文 http://fanzhichao.blog.hexun.com/22330640_d.html 在终端输出彩色信息有点类似于html的语法,即在要输出的文字前加上转义字符. 指令格式如下\03 ...
- FireMonkey下的异形窗体拖动(需要使用FmxHandleToHwnd函数转化一下句柄)
DelphiXE2 Firemoney FMX 的窗体不只是为windows的, 所以很多功能都没有了. 最常见的就是拖拽了 先看 VCL时代 一个经典拖动代码 ReleaseCapture(); S ...
- Qt按ESC关闭模态对话框不触发closeEvent()问题解析(ESC默认调用的是reject()函数,所以必须覆盖这个函数才会有效果)good
事情是这样的:今天调试窗体,突然发现按ESC键居然跳过closeEvent()关闭了对话框!我的关闭判断都在closeEvent()里,这直接导致非正常关闭了正在进行的工作.先重建下场景: 调用处: ...
- 15 BOM的介绍
avaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的元素的API.比 ...
- 03 Javascript的数据类型
数据类型包括:基本数据类型和引用数据类型 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值 ...
- 《周四橄榄球之夜》流媒体视频拆解:Twitch VS Amazon Prime
文 / Phil Cluff 译 / 王月美 原文链接:https://mux.com/blog/thursday-night-football-streaming-technology-showdo ...
- RocketMQ 可视化环境搭建和基础代码使用
RocketMQ 是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在 2016 年底捐赠给 Apache 开源基金会成为孵化项目,经过不 ...
- 【Netty4】深入学习Netty
Netty is an asynchronous event-driven network application framework for rapid development of mainta ...
- webpack打包工具的初级使用方法
这里下载的是webpack的3.8.1版本(新版更新的使用有些问题) 什么是webpack? 他是一个前端资源加载或打包工具,. 资源: img css json等. 下载的话 用 npm webpa ...