准备工作
下载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>
<activity
android: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>
<activity
android: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()方法
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Tencent.onActivityResultData(requestCode,resultCode,data,listener);
}
我这里直接选择再活动中实现这个接口,
mTencent = Tencent.createInstance("appid", this);
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Tencent.onActivityResultData(requestCode,resultCode,data,this);
}
...
@Override
public void onComplete(Object o) {
ToastUtil.showToast("分享成功");
}
@Override
public void onError(UiError uiError) {
ToastUtil.showToast("分享失败,错误码"+uiError.errorCode);
}
@Override
public void onCancel() {
ToastUtil.showToast("分享取消");
}