分享

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

 quasiceo 2014-10-13
分类: Android 2013-08-05 15:12 3005人阅读 评论(13) 收藏 举报

本代码实现的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登录功能

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


第二步:调用接口上传本地图片到QQ空间
  1. String path = "/mnt/sdcard/test.jpg";  
  2.     byte[] data = null;  
  3.     try  
  4.     {  
  5.         RandomAccessFile f = new RandomAccessFile(path, "r");  
  6.         data = new byte[(int)f.length()];  
  7.         f.read(data);  
  8.     }  
  9.     catch (Exception e) {  
  10.     }  
  11.       
  12.     Bundle b = new Bundle();  
  13.     b.putByteArray("picture", data);  
  14.     b.putString("photodesc""1111111111111");  
  15.     IRequestListener listener = new BaseApiListener("upload_pic"true);  
  16.     mTencent.requestAsync(Constants.GRAPH_UPLOAD_PIC, b, Constants.HTTP_POST, listener, null);  


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

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

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

  1. try {  
  2.         int ret = response.getInt("ret");  
  3.         if (ret == 0)  
  4.         {  
  5.             String url = response.optString("large_url");  
  6.                         Bundle bundle = new Bundle();  
  7.             bundle.putString(Constants.PARAM_TARGET_URL, url);  
  8.             bundle.putString(Constants.PARAM_IMAGE_URL, url);  
  9.             bundle.putString(Constants.PARAM_SUMMARY, text);  
  10.           
  11.             mTencent.shareToQQ(this, bundle, listener);  
  12.         }             
  13.     } catch (JSONException e) {  
  14.     }  


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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多