分享到 :

分享消息到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
paramsKV参数对,具体取值见下表
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);
File file = new File(localPath);
if (file.length() >= 5 * 1024 * 1024) {
    if (listener != null) {
        listener.onError(new UiError(Constants.ERROR_IMAGE_TOO_LARGE, Constants.MSG_SHARE_IMAGE_TOO_LARGE_ERROR, null));
    }
    SLog.e(TAG, "doShareImageToQQ -- error: " + Constants.MSG_SHARE_IMAGE_TOO_LARGE_ERROR);
    return;
}

(模式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可选StringARK JSON格式的字符串

    ARK JSON串说明:

JSON key是否必传类型参数说明
app必填StringARK应用名称,com.tencent.map
view必填StringARK应用对应展示的视图
meta必填StringARK应用元数据,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参数说明如下:

    示例代码

    调用分享接口的示例代码如下:

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);

(模式7)分享QQ小程序到QQ空间

可以从外部app分享到手Q空间为一个QQ小程序,并可以指定预览图、文案、小程序路径:

接口参数

调用分享接口分享QQ小程序的params参数说明如下:

示例代码

调用分享接口的示例代码如下:

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(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,
QzoneShare.SHARE_TO_QZONE_TYPE_MINI_PROGRAM);
mTencent.shareToQzone(QQShareActivity.this, miniProgramBundle, qqShareListener);
返回顶部