支持类型:文字、图片、音乐、视频、网页、小程序。
字段包含:
字段包含:
字段包含:
注意:分享至微信的音乐,直接点击好友会话或朋友圈下的分享内容会跳转至第三方 APP,点击会话列表顶部的音乐分享内容将跳转至微信原生音乐播放器播放。
字段包含:
字段包含:
字段包含:
支持从APP分享小程序类型消息至微信,用户接收后可打开进入小程序。
要求:
1. 发起分享的App与小程序属于同一微信开放平台帐号。
2. 支持分享小程序类型消息至会话,暂不支持分享至朋友圈。
3. 若客户端版本低于6.5.6,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接。
支持类型:文字、图片、音乐、视频、网页。
字段包含:
字段包含:
字段包含:
注意:分享至微信的音乐,直接点击好友会话或朋友圈下的分享内容会跳转至第三方 APP,点击会话列表顶部的音乐分享内容将跳转至微信原生音乐播放器播放。
字段包含:
字段包含:
注:若用户未安装微信,会闪退,需要在自己开发的APP里进行判断。
参考:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN
分享消息到QQ的接口,可将新闻、图片、文字、应用等分享给QQ好友、群和讨论组。 不用用户授权(使用手机QQ当前的登录态)。调用将打开分享的界面,用户选择好友、群或讨论组之后,点击确定即可完成分享,并进入与该好友进行对话的窗口。
字段包含:
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
(1)分享时自动打开分享到QZone的对话框。
(2)分享时隐藏分享到QZone按钮字段包含:
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
(1)分享时自动打开分享到QZone的对话框。
(2)分享时隐藏分享到QZone按钮音乐分享后,发送方和接收方在聊天窗口中点击消息气泡即可开始播放音乐。
字段包含:
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
(1)分享时自动打开分享到QZone的对话框。
(2)分享时隐藏分享到QZone按钮应用分享后,发送方和接收方在聊天窗口中点击消息气泡即可进入应用的详情页。
字段包含:
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
(1)分享时自动打开分享到QZone的对话框。
(2)分享时隐藏分享到QZone按钮目前支持图文分享,发表说说、视频,上传图片。不用用户授权(使用手机QQ当前的登录态),调用后将打开手机QQ内QQ空间的界面进行分享或发表操作。
字段包含:
注意:QZone接口暂不支持发送多张图片的能力,若传入多张图片,则会自动选入第一张图片作为预览图。多图的能力将会在以后支持。
字段包含:
注:若用户未安装QQ,会自动跳转到下载QQ页面。
参考:http://wiki.open.qq.com/index.php?title=Android_API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E&=45038
发送请求消息到微博,唤起微博分享界面。支持文字、单图、多图、视频字段,具体如下:
只能设置本地文件的路径,并且是当前应用可以访问的路径,现在不支持网络路径(多图分享依靠微博最新版本的支持,所以当分享到低版本的微博应用时,多图分享失效,h5分享微博暂时不支持多图)
分享网页到微博,分享后的效果为微博内容+网页链接。字段包括:
注:若用户未安装新浪微博,可以自动跳转到网页端分享,如果用户未登陆需要登陆。
参考:https://github.com/sinaweibosdk/weibo_android_sdk
微信分享遇到的坑
(1)微信分享必须是签名正式包,并且在微信开放平台已经注册成功,不然分享时会闪退。
(2)微信分享图片或网站时,图片大小不能超过10MB,缩略图大小不能超过32KB,可以在分享前对图片进行压缩。注意这里所述的大小并不是图片占硬盘的大小,而是图片占内存的大小,和硬盘中存储大小没有任何关系。
下面示例了两个压缩的方法,首先是bitmap压缩成byte数组:
private byte[] bitmapToByteArray(Bitmap bitmap, boolean needRecycle) {
if (bitmap != null) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int quality;
byte[] bytes;
try {
while (true) {
quality = 100;
do {
outputStream.reset();
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
bytes = outputStream.toByteArray();
if (bytes.length < MAX_THUMB_SIZE) {
if (needRecycle) {
bitmap.recycle();
}
return bytes;
}
quality -= 10;
} while (quality > 0);
bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() / 2, bitmap
.getHeight() / 2, true);
}
} catch (Exception e) {
} finally {
try {
outputStream.close();
} catch (Exception e) {
}
}
}
return null;
}
然后是bitmap压缩成指定大小的bitmap:
private void createScaledBitmap() {
if (mBitmap != null) {
try {
if (mBitmap.getByteCount() >= MAX_SIZE) {
double scale = Math.sqrt(1.0 * mBitmap.getByteCount() / MAX_SIZE);
int scaledWidth = (int) (mBitmap.getWidth() / scale);
int scaledHeight = (int) (mBitmap.getHeight() / scale);
mBitmap = Bitmap.createScaledBitmap(mBitmap, scaledWidth, scaledHeight, true);
}
} catch (Exception e) {
}
}
}
(3)一般启动模式为singleTask的Activity再次启动时的生命周期为onNewIntent -> onRestart -> onStart -> onResume,但是当WXEntryActivity的启动模式设为singleTask,在未登录状态下分享到微信,此时取消分享并返回后,生命周期为onRestart -> onStart -> onNewIntent -> onResume。原因可能微信在登录界面返回时做了特殊处理。
QQ分享遇到的坑
(1)QQ分享可以是debug包。
微博分享遇到的坑
(1)微博分享必须是正式签名包,不然分享时会失败。
(2)分享微博中的图片大小限制为2MB,分享网页中的缩略图大小限制为32KB。可以在分享前压缩一下,代码可参照上面微信图片压缩的代码,但是微博API还会对分享的图片以85%的质量压缩成JPEG格式的图片,如果是png图片,会对透明的部分自动填充黑色。
参考:
1. http://xyzlf.cn/2016/07/01/android-share-sdk-1.html
2. https://blog.csdn.net/zhaizu/article/details/50680970
3. https://juejin.im/entry/57968072c4c9710054245db7
4. http://wuzheng.site/2016/11/29/Android%E5%BE%AE%E5%8D%9A%E3%80%81%E5%BE%AE%E4%BF%A1%E5%88%86%E4%BA%ABSDK%E5%9B%BE%E7%89%87%E5%A4%A7%E5%B0%8F%E9%99%90%E5%88%B6/