首先是看  qq互联里面的文档  按文档操作:qqsdk移动应用接入流程  按照这个流程一步一步来就是了。基本上没的错误的。但还是有些很坑的地方。这里列举一些。

接下来

一、首先是qq登陆。

下载sdk集成到项目  并在androidmanifest.xml里面增加节点   :集成到项目

1. 在AndroidManifest.xml里声明QQ相关的Activity

<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" /><data android:scheme="tencentxxxxxxxxxx" /></intent-filter></activity><activityandroid:name="com.tencent.connect.common.AssistActivity"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden"></activity>

AssistActivity   文档里面是没有的   ,只要你不加  系统会报错让你添加该activity。腾讯文档没有更新  这是很坑的地方。

注意哈  XXXXXXX的地方,要换成你的APP_ID    前面的tencent一定要哈。不能删除。以下文档凡事xxxxxxxx的地方都是app-id

2. 添加SDK到你的工程里

具体就是拷贝*.jar到lib目录下,然后添加编译。 这些基本上的朋友都会嘛  不用讲述了嘛
注意,这里有个坑,如果是全量SDK包,是包含有支付SDK的,有一些应用市场会限制个人开发者的产品里添加这种支付SDK,审核不过。 
修改方式也简单,就是只添加基础包,分享登录什么的够用了。下载下来的都有说明的。自己选择就是了 在jar里面。

3. 创建实例:

Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下
 private IWXAPI api;private Handler handler=new Handler();private Tencent tencent;private Button qqlanding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_land);// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。// 其中APP_ID是分配给第三方应用的appid,类型为String。tencent = Tencent.createInstance("xxxxxxx", this.getApplicationContext());// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取// 初始化视图init();}
登陆点击事件调用此方法:
public void Login(){tencent = Tencent.createInstance("xxxxxxx", this.getApplicationContext());if (!tencent.isSessionValid()){tencent.login(this, "all", new BaseUiListener());}}

4. 实现回调接口

public class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object object) {Toast.makeText(LandActivity.this,"登陆成功",Toast.LENGTH_SHORT).show();}@Overridepublic void onError(UiError uiError) {}@Overridepublic void onCancel() {}}

重载onActivityResult  这个方法要在腾讯开放平台有说这个问题、问题很乱 腾讯开放平台

注:在某些低端机上调用登录后,由于内存紧张导致APP被系统回收,登录成功后无法成功回传数据。
解决办法如下
在调用login的Activity或者Fragment重写onActivityResult方法,示例代码如下:

 @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == Constants.REQUEST_LOGIN) {if (resultCode == Constants.ACTIVITY_OK) {tencent.handleLoginData(data, new BaseUiListener());}super.onActivityResult(requestCode, resultCode, data);}}

好  这样 qq登陆的功能就完成了、。

接下来是
二、qq好友分享:
接上面第3条 创建实例 以后   继续

4. 实现分享回调接口

class ShareUiListener implements IUiListener {@Overridepublic void onComplete(Object o) {Toast.makeText(AboutActivity.this,"分享成功",Toast.LENGTH_SHORT).show();}@Overridepublic void onError(UiError uiError) {// 分享异常}@Overridepublic void onCancel() {//分享取消}}

点击事件调用此方法  :分享的代码

private Bundle paramsa;private void shareToQQ() {paramsa = new Bundle();paramsa.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);paramsa.putString(QQShare.SHARE_TO_QQ_TITLE, "标题");// 标题paramsa.putString(QQShare.SHARE_TO_QQ_SUMMARY, "头部按摩器");// 摘要paramsa.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://mp.weixin.qq.com/s/ObyplzD9MQJ1OcXATN64hQ");// 内容地址paramsa.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://www.cdqldz.com/img/ew1.png");// 网络图片地址  params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "应用名称");// 应用名称paramsa.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其它附加功能");tencent.shareToQQ(AboutActivity.this, paramsa, new ShareUiListener());}

5 同样的  要重写onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// 官方文档没这句代码, 但是很很很重要, 不然不会回调!Tencent.onActivityResultData(requestCode, resultCode, data, new ShareUiListener());if (requestCode == Constants.REQUEST_API) {if (resultCode == Constants.REQUEST_QQ_SHARE ||resultCode == Constants.REQUEST_QZONE_SHARE ||resultCode == Constants.REQUEST_OLD_SHARE) {Tencent.handleResultData(data, new ShareUiListener());}}}

到此 就完成了分享工作

有几个值得注意的问题: 
1. AndroidManifest.xml里的那个APP_ID前,一定要有tencent 
2. 重载onActivityResult
空间分享的代码就上传了 大同小异。
空间分享代码:
private Bundle params;private void shareToQZone() {params = new Bundle();params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "标题");// 标题params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");// 摘要params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,"http://www.qq.com/news/1.html");// 内容地址ArrayList<String> imgUrlList = new ArrayList<>();imgUrlList.add("http://f.hiphotos.baidu.com/image/h%3D200/sign=6f05c5f929738bd4db21b531918a876c/6a600c338744ebf8affdde1bdef9d72a6059a702.jpg");params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL,imgUrlList);// 图片地址tencent.shareToQzone(AboutActivity.this, params,new ShareUiListener());}

Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理相关推荐

  1. android开发qq分享图片,android qq分享图片_android qq分享sdk_android qq分享

    AndroidQQ空间分享博客分类:Android分享先上图:QZoneShareActivity.java:Java代码packagecom.cz.hello.activity;importjava ...

  2. Android开发——集成友盟社会化分享遇到的坑(一)

    前言 在很多App开发当中都有社会化分享,我一般都是集成友盟的社会化分享功能.这次开发公司的App需要集成微信.朋友圈.QQ和QQ空间.我是集成第三方成功了,但是在QQ分享的时候出现了意外,第一次出现 ...

  3. QQ登录+分享+空间分享

    添加权限 <uses-permission android:name="android.permission.INTERNET" />     <uses-per ...

  4. Android开发丶集成微信原生分享并于分享网页时加载网络缩略图

    微信分享也是一项很常用的功能了,以往都是用友盟或者mobShareSDK框架来实现的,这两者在微信官方的sdk基础上封装的很好,并且加入了一些很实用性的功能,不过这次因为只有微信平台的分享,而且微信登 ...

  5. Android开发必须要会!分享两道阿里P7究极难度算法题,醍醐灌顶!

    前文 本文希望通过揭开一些 React 隐藏的技术细节, 来辅助对官方文档中某些概念的理解 读者可以将本文看做对官方文档的补充 行文方式我采用的是提问-解答的方式, 即先根据官方文档给出的使用规则, ...

  6. 【收藏向】谷歌技术团队出品,Android开发入门教程,开源分享

    程序员圈子中,python.java等都是热门领域,网络上相关学习资源也比较多,相较之下Android的学习资料就比较少了,并且大多是碎片化的知识,不够系统和全面. 今天就来整理一下Android开发 ...

  7. Android仿QQ登陆

      今天根据腾讯qq,我们做一个练习,来学习如何制作一个漂亮的布局.首先看一下官方图片 还是一个启动画面,之后进入登录页面,导航页面就不介绍了,大家可以参考微信的导航页面.首先程序进入SplashAc ...

  8. android里qq登录界面,Android仿QQ登陆窗口实现原理

    今天根据腾讯qq,我们做一个练习,来学习如何制作一个漂亮的布局.首先看一下官方图片 还是一个启动画面,之后进入登录页面,导航页面就不介绍了,大家可以参考微信的导航页面.首先程序进入SplashActi ...

  9. Android开发——集成友盟社会化分享遇到的坑(二)

    前言 从工作到现在遇到了集成友盟社会化分享第二个坑,集成最新的版的友盟社会化分享SDK遇见了一个之前没有遇到过的程序错误 java.lang.NoClassDeFoundError:Failed re ...

最新文章

  1. AlphaFold证明人工智能可以解决基本的科学问题
  2. 安卓linux终端termux下载,高级手机终端app
  3. uni-app——map组件路线[polyline]功能示例
  4. Java @Deprecated注解
  5. Python进阶:值传递,引用传递?不存在的,是赋值传递
  6. 如何减少mysql的连接时间_mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案...
  7. Bailian3752 走迷宫【BFS】
  8. numpy的array和matrix
  9. BFC详解【CSS面试题】
  10. ubuntu 16.04 64位 搭建GenieACS
  11. Mac没声音解决办法记录
  12. 更改itunes备份路径【windows备份iphone数据】
  13. Node.js 包管理器 ied
  14. vue 流星的样式和流光canvas
  15. 访问ip不在白名单中,请参考FAQ:
  16. c语言股价连续上涨的天数,为什么通达信没有连涨天数,我的通达信怎么没有连涨天数显示...
  17. 解决微信公众号发布新的版本H5页面有缓存的问题
  18. Linux系统调用列表
  19. 【论文详解】—AlphaGo中用到的3个关键技术
  20. JS 即时刷新验证码图片代码

热门文章

  1. 瑞萨电子Rcar-H3的qnx系统开发
  2. 人工智能概览及AI数学基础
  3. 微信小程序 过滤html,微信小程序中数据过滤的实现方法介绍(代码)
  4. 电能质量:三相电压不平衡
  5. [转载]T-SQL象数组一样处理字符串
  6. Error: Type ‘DiagnosticableMixin‘ not found.
  7. 电商时代的大数据——人人都爱吹牛皮【亿买网发布】
  8. 6.3 快速更改图表的数据源 [原创Excel教程]
  9. 上海交大证实“汉芯”造假
  10. 陀螺问答TOP 10 周榜单(9.23-9.29):币圈暴跌是否与谷歌量子霸权有关?