QQ SDK 分享实现,及不回调问题
来源:互联网 发布:网络布线好学吗 编辑:程序博客网 时间:2024/06/05 13:35
写在前面的话
其实,用了这么多分享功能,我觉得QQ和微博的分享是最简单的了,特别是QQ,其实实现和设计都挺方便的,特别是对分享结果的监测。可以只实现一个接口便行
最难用的就是微信了。需要单独的Activity去接受,而且连这个Activity的在代码层面的路径(包结构)都是规定好的,而且手册里也不明确说,恶心死人不偿命。
谁说微信是产品设计的顶级作品?就冲这个SDK的手册难用程度,我给1分。
1. 在AndroidManifest.xml里声明QQ相关的Activity
<activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencentXXXXXXXX" /> </intent-filter></activity><activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
注意XXXXXXX的地方,要换成你的APP_ID
2. 添加SDK到你的工程里
具体就是拷贝*.jar到lib目录下,然后添加编译。
注意,这里有个坑,如果是全量SDK包,是包含有支付SDK的,有一些应用市场会限制个人开发者的产品里添加这种支付SDK,审核不过。
修改方式也简单,就是只添加基础包,分享登录什么的够用了。
3. 实现回调接口
private class QQShareListener implements IUiListener{ @Override public void onCancel() { Toast.makeText(InviteActivity.this, R.string.cancel_to_share, Toast.LENGTH_SHORT) .show(); } @Override public void onError(UiError uiError) { Toast.makeText(InviteActivity.this, InviteActivity.this.getText(R.string .failed_to_share) + uiError.errorMessage + "\n" +uiError.errorDetail, Toast.LENGTH_SHORT) .show(); } @Override public void onComplete(Object o) { enableAction(InviteActivity.this.action); }}
注意,要声明一个类的变量,后边会用到
QQShareListener sl = new QQShareListener();
4. 最恶心的问题 重载onActivityResult
官方手册中没有写这条,但是不写不成功
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 官方文档没没没没没没没没没没没这句代码, 但是很很很很很很重要, 不然不会回调! Tencent.onActivityResultData(requestCode, resultCode, data, shareListener); if (requestCode == Constants.REQUEST_API) { if (resultCode == Constants.REQUEST_QQ_SHARE || resultCode == Constants.REQUEST_QZONE_SHARE || resultCode == Constants.REQUEST_OLD_SHARE) { Tencent.handleResultData(data, shareListener); } }}
5. 实现分享代码
//分享到QQpublic void shareToQQ(View v){ Tencent tencent = Tencent.createInstance(TuHaoConstants.QQ_APP_ID, this.getApplicationContext()); final Bundle params = new Bundle(); Util.ConfigParser configParser = new Util.ConfigParser(this); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TITLE, configParser.getShareTitle()); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, configParser.getShareDescription()); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, configParser.getShareUrl()); params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, dtb.saveForSharing(BitmapFactory .decodeResource(this.getResources(), R.mipmap.ic_launcher))); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, this.getString(R.string.app_name)); tencent.shareToQQ(this, params, shareListener);}//分享到QZonepublic void shareToQZone(View v){ DrawTextOnBmp dtb = new DrawTextOnBmp(this); Tencent tencent = Tencent.createInstance(TuHaoConstants.QQ_APP_ID, this.getApplicationContext()); Bundle params = new Bundle(); Util.ConfigParser configParser = new Util.ConfigParser(this); params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, dtb.saveForSharing(BitmapFactory .decodeResource(this.getResources(), R.mipmap.ic_launcher))); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, this.getString(R.string.app_name)); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, configParser.getShareUrl()); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, configParser.getShareDescription()); params.putString(QQShare.SHARE_TO_QQ_TITLE, configParser.getShareTitle()); Toast.makeText(this, R.string.launching_qzone, Toast.LENGTH_SHORT).show(); tencent.shareToQQ(this, params, shareListener);}
到此,大功造成。
很多人和我当初一样,明明实现了回调接口,但就是不回调,不知道原因在哪里。
后来发现有几个值得注意的问题:
1. AndroidManifest.xml里的那个APP_ID前,一定要有tencent
2. 重载onActivityResult
1 0
- QQ SDK 分享实现,及不回调问题
- QQ分享及登录sdk的坑
- QQ互联sdk实现分享到QQ空间
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到QQ,分享到微博
- Android实现QQ分享及注意事项
- Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理
- Android微信SDK分享实现,及分享结果监测
- Swift - 腾讯官方SDK的配置及使用(分享到QQ空间、分享到好友)
- 使用QQ互联Android SDK 实现本地图片的QQ定向分享
- QQ/QZONE 分享之后不回调的问题
- css3仿QQ网页播放器及分享功能实现
- wepapp 实现qq分享
- Android 微信,QQ,新浪三方登录及分享官方SDK集成
- android 微信 以及QQ的SDK接入分享功能遇到的些问题小结
- Android QQ SDK分享功能接入
- 使用share SDK实现QQ空间授权登录、分享(1.x版本)
- 使用share SDK实现QQ空间授权登录、分享(1.x版本)
- 使用share SDK实现QQ空间授权登录、分享(1.x版本)
- jpa查询所有的记录
- Visual format language(2)
- hdu 2046 骨牌铺方格
- cocos2dx 3.3 AssetsManager简单分析
- MySql数据库(二)
- QQ SDK 分享实现,及不回调问题
- windows 多线程 消息队列
- 电脑常识之磁盘的簇
- bzoj2208 连通数 tarjan缩点&状压常数优化
- 计算机原理-w位无符号和有符号位数最大值和最小值公式
- Cheat Engine 6.4源码编译
- Android - 手机卫士开发(MobileSafe)(二)
- 素数打表(常用素数判断题节省时间复杂度)
- mysql(zip)安装和基本命令