分享消息到QQ(无需QQ登录)
A、接口使用场景
分享消息到QQ的接口,可将新闻、图片、文字、应用等分享给QQ好友、群和讨论组。Tencent类的shareToQQ函数可直接调用,不用用户授权(使用手机QQ当前的登录态)。调用将打开分享的界面,用户选择好友、群或讨论组之后,点击确定即可完成分享,并进入与该好友进行对话的窗口。
B、接口方法
public void com.tencent.tauth.Tencent.shareToQQ(Activity activity, Bundle params, IUiListener listener)
C、接口参数
调用邀请接口的参数说明如下:
参数 | 参数说明 |
activity | 调用者所在Activity |
params | KV参数对,具体取值见下表 |
listener | 回调 |
本接口支持6种模式,每种模式的params参数设置不同,下面分别进行介绍:
(模式1) 分享图文消息
接口参数
调用分享接口分享图文消息的params参数说明如下:
示例代码
调用分享接口分享图文消息的示例代码如下:
private void onClickShare() { final Bundle params = new Bundle(); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, Tencent.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题"); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要"); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://www.qq.com/news/1.html"); params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif"); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "测试应用222222"); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能"); mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener()); } |
(模式2) 分享纯图片
接口参数
调用分享接口分享纯图片的params参数说明如下:
示例代码
调用分享接口分享纯图片的示例代码如下:
private void onClickShare() { Bundle params = new Bundle(); params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,imageUrl.getText().toString()); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName.getText().toString()); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare. SHARE_TO_QQ_TYPE_IMAGE); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare. SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener()); } |
增加纯图分享图片不能大于5M的限制:
String localPath = params.getString(SHARE_TO_QQ_IMAGE_LOCAL_URL); |
(模式3) 分享音乐
音乐分享后,发送方和接收方在聊天窗口中点击消息气泡即可开始播放音乐。
接口参数
调用分享接口分享音乐的params参数说明如下:
示例代码
调用分享接口分享音乐的示例代码如下:
private void onClickAudioShare() { final Bundle params = new Bundle(); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, Tencent.SHARE_TO_QQ_TYPE_AUDIO); params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题"); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要"); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://www.qq.com/news/1.html"); params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif"); params.putString(QQShare.SHARE_TO_QQ_AUDIO_URL, "音乐链接"); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "测试应用222222"); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener()); } |
(模式4) 分享应用
(已废弃)
应用分享后,发送方和接收方在聊天窗口中点击消息气泡即可进入应用的详情页。
接口参数
调用分享接口分享应用的params参数说明如下:
示例代码
调用分享接口分享应用的示例代码如下:
private void onClickAppShare() { final Bundle params = new Bundle(); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, Tencent.SHARE_TO_QQ_TYPE_APP); params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题"); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要"); params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif"); params.putString(QQShare.SHARE_TO_QQ_AUDIO_URL, "音乐链接"); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "测试应用222222"); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener()); } |
(模式5)分享携带ARK JSON串
调用分享接口分享图文消息、纯图片、音乐时可以携带额外ARK(手Q轻应用)参数JSON串,分享将被展示成ARK消息。
接口额外参数
调用分享接口分享分享图文消息、纯图片、音乐为ARK展示,params参数在模式1、模式2、模式3、模式4接口参数基础上新增额外参赛说明如下:
参数 | 是否必传 | 类型 | 参数说明 |
QQShare.SHARE_TO_QQ_ARK_INFO | 可选 | String | ARK JSON格式的字符串 |
ARK JSON串说明:
JSON key | 是否必传 | 类型 | 参数说明 |
app | 必填 | String | ARK应用名称,com.tencent.map |
view | 必填 | String | ARK应用对应展示的视图 |
meta | 必填 | String | ARK应用元数据,view视图对应需要的JSON字符串元数据 |
Ark JSON串例子 : {"app":"com.dianping.dpscope","view":"RestaurantShare","meta":{"ShopData":{"shopId":"2511961"}}}
示例代码
调用分享接口分享应用的示例代码如下:
// Bundle携带图文信息后,再添加ARK信息。 String arkStr = arkInfoTxt.getText().toString(); params.putString(QQShare.SHARE_TO_QQ_ARK_INFO, arkStr); |
注意:携带ARK信息的同时,需要携带原本的图文信息,ARK信息只是作为可选项,传递的JSON串为空或者不规范,分享的仍然为原本的图文信息。
(模式6)分享成QQ小程序
可以从外部app分享到手Q为一个QQ小程序,并可以指定预览图、文案、小程序路径:
接口参数
调用分享接口分享QQ小程序的params参数说明如下:
示例代码
可以从外部app分享到手Q为一个QQ小程序,并可以指定预览图、文案、小程序路径:
接口参数
调用分享接口分享QQ小程序的params参数说明如下:
参数 | 是否必传 | 类型 | 参数说明 |
QQShare.SHARE_TO_QQ_KEY_TYPE | 必填 | Int | 分享的类型。分享小程序填QQShare.SHARE_TO_QQ_MINI_PROGRAM |
QQShare.SHARE_TO_QQ_TITLE | 必填 | String | 分享的标题, 最长30个字符。如果不填,默认使用小程序名称作为标题 |
QQShare.SHARE_TO_QQ_SUMMARY | 必填 | String | 分享的消息摘要,最长40个字符。若不填,默认使用小程序后台注册的描述作为摘要 |
QQShare.SHARE_TO_QQ_TARGET_URL | 必填 | String | 兼容低版本的网页链接 |
QQShare.SHARE_TO_QQ_IMAGE_URL | 必填 | String | 分享预览封面图的url,或者是本地图的路径 |
QQShare.SHARE_TO_QQ_MINI_PROGRAM_APPID | 必填 | String | 分享的小程序appid,小程序与当前应用必须为同一个主体 |
QQShare.SHARE_TO_QQ_MINI_PROGRAM_TYPE | 可选 | String | 3表示正式版,1表示体验版 |
QQShare.SHARE_TO_QQ_MINI_PROGRAM_PATH | 必填 | String | 分享的小程序页面路径,如不需要指定,请填主页路径 |
Bundle miniProgramBundle = new Bundle(); miniProgramBundle.putString(QQShare.SHARE_TO_QQ_TITLE, title.getText().toString()); miniProgramBundle.putString(QQShare.SHARE_TO_QQ_SUMMARY, summary.getText().toString()); miniProgramBundle.putString(QQShare.SHARE_TO_QQ_TARGET_URL, targetUrl.getText().toString()); miniProgramBundle.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, imageUrl.getText().toString()); miniProgramBundle.putString(QQShare.SHARE_TO_QQ_MINI_PROGRAM_APPID, mETMiniProgramAppid.getText().toString()); miniProgramBundle.putString(QQShare.SHARE_TO_QQ_MINI_PROGRAM_PATH, mETMiniProgramPath.getText().toString()); miniProgramBundle.putString(QQShare.SHARE_TO_QQ_MINI_PROGRAM_TYPE, mETMiniProgramType.getText().toString()); miniProgramBundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, shareType); mTencent.shareToQQ(QQShareActivity.this, miniProgramBundle, qqShareListener); |