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

本代码实现的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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值