使用QQ互联Android SDK 实现本地图片的QQ定向分享

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 21:58   11   0

本代码实现的QQ 互联SDK版本为1.6.1

在较新一版的QQ互联Android SDK 中,提供了一个定向分享的办法:

void com.tencent.tauth.Tencent.shareToQQ(Activity arg0, Bundle arg1, IUiListener arg2)

该方法可以将消息分享给指定的QQ好友。如下所示:

然而,从SDK的文档说明中,我们可以发现,该定点分享功能并不支持本地图片的分享。

Bundle 参数 是否必传 类型 参数说明
Constants.PARAM_TARGET_URL 必选 String 这条分享消息被好友点击后的跳转URL。
Constants.PARAM_TITLE 可选 String 分享的标题。注:PARAM_TITLE、PARAM_IMAGE_URL、PARAM_SUMMARY不能全为空,最少必须有一个是有值的。
Constants.PARAM_IMAGE_URL 可选 String 分享的图片URL。
Constants.PARAM_SUMMARY 可选 String 分享的消息摘要,最长50个字。
Constants.PARAM_APP_SOURCE 可选 String 标识该消息的来源应用,值为应用名称+AppId。
Constants.PARAM_APPNAME 可选 String 手Q客户端顶部,替换“返回”按钮文字,如果为空,用返回代替
因此,对于想实现分享本地图片给指定好友的Android开发者,这是个非常郁闷的问题。

在这里,我有个小窍门教给大家,可以实现QQ定点分享本地图片的功能:

通过上传相册到QQ空间,获取本地图片的网络地址,再通过调用shareToQQ(Activity arg0, Bundle arg1, IUiListener arg2)的方法实现分享图片给好友。

第一步:调用QQ登录功能

 mTencent = Tencent.createInstance(AppId, this.getApplicationContext());
 mTencent.login(this, Scope, listener);


第二步:调用接口上传本地图片到QQ空间

String path = "/mnt/sdcard/test.jpg";
 byte[] data = null;
 try
 {
  RandomAccessFile f = new RandomAccessFile(path, "r");
  data = new byte[(int)f.length()];
  f.read(data);
 }
 catch (Exception e) {
 }
 
 Bundle b = new Bundle();
 b.putByteArray("picture", data);
 b.putString("photodesc", "1111111111111");
 IRequestListener listener = new BaseApiListener("upload_pic", true);
 mTencent.requestAsync(Constants.GRAPH_UPLOAD_PIC, b, Constants.HTTP_POST, listener, null);


这是上传成功后,回传的图片的信息

{
    "ret": 0,
    "height": 600,
    "small_url": "http://o229.photo.store.qq.com/psb?/V10DxumN2xhOtm/EKUDoGCLJ64X7Naqiq80rLPn6be61U4GFX5cFSy*U1s!/a/dGAngIhBGgAA/DmQDAA!!&bo=IANYAgAAAAABAF4!",
    "width": 800,
    "lloc": "NDJ0ecqnomVN*1Hg0QsLYCeAiEEaAAA!",
    "large_url": "http://o229.photo.store.qq.com/psb?/V10DxumN2xhOtm/EKUDoGCLJ64X7Naqiq80rLPn6be61U4GFX5cFSy*U1s!/b/dGAngIhBGgAA/DmQDAA!!&bo=IANYAgAAAAABAF4!",
    "msg": "",
    "sloc": "NDJ0ecqnomVN*1Hg0QsLYCeAiEEaAAA!",
    "albumid": "V10DxumN2xhOtm"
}


第三步:在BaseApiListener的接口中,取得上传的图片的网络地址,并调用定点分享接口,将其分享给QQ好友。

try {
  int ret = response.getInt("ret");
  if (ret == 0)
  {
   String url = response.optString("large_url");
                        Bundle bundle = new Bundle();
   bundle.putString(Constants.PARAM_TARGET_URL, url);
   bundle.putString(Constants.PARAM_IMAGE_URL, url);
   bundle.putString(Constants.PARAM_SUMMARY, text);
  
   mTencent.shareToQQ(this, bundle, listener);
  }   
 } catch (JSONException e) {
 }


该参数Constants.PARAM_TARGET_URL是点击消息后跳转的地址,因此,若只是分享图片,则可将大图的网络地址赋值给它;若是分享文章等,则可将文章的链接赋值给它。最后一图为点击该分享后跳转的页面

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP