Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理
2017-02-08 15:17
411 查看
首先是看 qq互联里面的文档 按文档操作:qqsdk移动应用接入流程 按照这个流程一步一步来就是了。基本上没的错误的。但还是有些很坑的地方。这里列举一些。
接下来
一、首先是qq登陆。
下载sdk集成到项目 并在androidmanifest.xml里面增加节点 :集成到项目
AssistActivity 文档里面是没有的 ,只要你不加 系统会报错让你添加该activity。腾讯文档没有更新 这是很坑的地方。
注意哈 XXXXXXX的地方,要换成你的APP_ID 前面的tencent一定要哈。不能删除。以下文档凡事xxxxxxxx的地方都是app-id
具体就是拷贝*.jar到lib目录下,然后添加编译。 这些基本上的朋友都会嘛 不用讲述了嘛
注意,这里有个坑,如果是全量SDK包,是包含有支付SDK的,有一些应用市场会限制个人开发者的产品里添加这种支付SDK,审核不过。
修改方式也简单,就是只添加基础包,分享登录什么的够用了。下载下来的都有说明的。自己选择就是了 在jar里面。
Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下
登陆点击事件调用此方法:
接下来是
二、qq好友分享:
接上面第3条 创建实例 以后 继续
5 同样的 要重写onActivityResult
有几个值得注意的问题:
1. AndroidManifest.xml里的那个APP_ID前,一定要有tencent
2. 重载onActivityResult
空间分享的代码就上传了 大同小异。
空间分享代码:
接下来
一、首先是qq登陆。
下载sdk集成到项目 并在androidmanifest.xml里面增加节点 :集成到项目
1. 在AndroidManifest.xml里声明QQ相关的Activity
<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" /> <data android:scheme="tencentxxxxxxxxxx" /> </intent-filter> </activity> <activity android: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; @Override protected 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 { @Override public void onComplete(Object object) { Toast.makeText(LandActivity.this,"登陆成功",Toast.LENGTH_SHORT).show(); } @Override public void onError(UiError uiError) { } @Override public void onCancel() { } }
重载onActivityResult 这个方法要在腾讯开放平台有说这个问题、问题很乱 腾讯开放平台
注:在某些低端机上调用登录后,由于内存紧张导致APP被系统回收,登录成功后无法成功回传数据。
解决办法如下
在调用login的Activity或者Fragment重写onActivityResult方法,示例代码如下:
@Override protected 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 { @ 4000 Override public void onComplete(Object o) { Toast.makeText(AboutActivity.this,"分享成功",Toast.LENGTH_SHORT).show(); } @Override public void onError(UiError uiError) { // 分享异常 } @Override public 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开发BLE连接成功读写操作为什么gattback未回调的问题处理
- Android开发之使用SharedPreferences实现QQ登陆的选项框记忆功能(源代码分享)
- Android 使用友盟分享SDK,分享到QQ成功后,遇到app被销毁后,回到此分享界面无法正常点击界面问题。--连QQ都忘记处理的activity状态恢复问题
- Android微信登陆和微信分享,和登陆分享的回调处理
- 关于android微信QQ等平台分享功能实现中遇到的问题处理
- Android 集成ShareSDK分享QQ或空间成功后,回调却不执行的原因
- Android开发实现QQ登陆并获取信息、分享消息到QQ
- android应用开发_通过手机QQ分享到空间出现分享错误的无奈原因
- Android 集成ShareSDK分享QQ或空间成功后,回调却不执行的原因
- Android 集成ShareSDK分享QQ或空间成功后,回调却不执行的原因
- Android 集成ShareSDK分享QQ或空间成功后,回调却不执行的原因
- Android中集成QQ登陆和QQ好友分享及QQ空间分享
- Android开发:SurfaceView基本用法总结及开发问题分享
- Android开发问题处理
- 直接下载adt和android_sdk在Linux下安装软件和开发程序一定要处理好权限问题
- Android开发之大位图二次采样压缩处理(源代码分享)
- Android开发 QQ sso登录和分享到QQ好友功能,调用本地QQ客户端
- Android开发教程--关于onActivityResult没有回调的问题
- 【分享】迅为4412开发板移植Android后,安装QQ不能视频通信的问题,但照相机可用
- 分享Android平板电脑上开发应用程序不能全屏显示的问题解决