腾讯QQ分享消息
- 准备工作
- 实现QQ分享
- 创建实例
- 分享给好友
- 实现
- 回调
准备工作
下载SDK资源包和相关文档,把*.jar包放在libs目录下,并点击更新同步按钮Sync project
文档来源
配置Amanifest.xml文件,添加相关权限和回调活动
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application><application><activityandroid:name="com.tencent.tauth.AuthActivity"android:noHistory="true"android:launchMode="singleTask" ><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><!--这里的格式是tecent+appid--><data android:scheme="tencent你的AppId" /></intent-filter></activity><activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar" />
实现QQ分享
创建实例
不论是分享什么消息,还是分享到空间,好友,都是通过一个Tencent类实例,调用shareToQQ()方法
实例的创建很简单,参数1是申请的appId的String类型,参数2是context类
mTencent = Tencent.createInstance(appid, activity);
分享给好友
实现
文档中给出的示例代码
final Bundle params = new Bundle();params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.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());
其中
QQShare.SHARE_TO_QQ_EXT_INT
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,分享时自动打开分享到QZone的对话框。
QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,分享时隐藏分享到QZone按钮
不设置该项,会在分享给好友的列表中添加分享到QQ空间的选项
设置为QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,就是直接分享到空间
设置为QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,会在分享到好友列表中隐藏空间选项
QQShare.SHARE_TO_QQ_APP_NAME
测试中并没有发现有用的地方
回调
分享过程中会出现成功,失败,错误三种情况
在上一步中
mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener());
BaseUiListener类是实现了IUiListener接口的实现类
如果要确保回调,需要在活动的重写活动的onActivityResult()方法
@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);Tencent.onActivityResultData(requestCode,resultCode,data,listener);}
我这里直接选择再活动中实现这个接口,
mTencent = Tencent.createInstance("appid", this);
...@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);Tencent.onActivityResultData(requestCode,resultCode,data,this);}
...@Overridepublic void onComplete(Object o) {ToastUtil.showToast("分享成功");}@Overridepublic void onError(UiError uiError) {ToastUtil.showToast("分享失败,错误码"+uiError.errorCode);}@Overridepublic void onCancel() {ToastUtil.showToast("分享取消");}