集成准备

在微信开放平台创建移动应用,输入应用的信息,包括移动应用名称,移动应用简介,移动应用图片信息,点击下一步,选择Android 应用,填写信息提交审核。

获取Appkey

集成【友盟+】SDK之前,您首先需要到 【友盟+】官网注册并且添加新应用,获得Appkey。

1、填写应用基本信息,获取AppKey

首先添加新应用,输入应用名和选择平台信息,选择应用类别,点击提交冰获取应用appKey,得到Android 唯一Appkey

2、下载SDK并去集成

找到 https://developer.umeng.com/sdk/android界面,选择社会化分享 SDK,,点击设置,选择需要分享的平台,点击下载,下载解压后,将common文件夹下的文件夹拷贝到项目中,再将share文件夹下的main文件夹以及platforms(选择你想使用的平台即可)和shareboard文件夹下对应的资源文件和jar放入你的工程。

3、添加回调Activity

微信

在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity

支付宝

与微信相似,支付宝需要在包名目录下创建apshare文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。

QQ与新浪

QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

注意onActivityResult不可在fragment中实现,如果在fragment中调用登录或分享,需要在fragment依赖的Activity中实现

4、配置Android Manifest XML

  • 微信:
 <activityandroid:name=".wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:theme="@android:style/Theme.Translucent.NoTitleBar" />

  • qq(请注意将我们的qq appkey替换成您自己的qq appkey):
     <activityandroid: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="tencentappkey" /></intent-filter></activity><activityandroid:name="com.tencent.connect.common.AssistActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden|screenSize"/>

5、权限添加

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

如果需要使用QQ纯图分享或避免其它平台纯图分享的时候图片不被压缩,可以增加以下权限:

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

请查看你的build.gradle文件,如果 targetSdkVersion小于或等于22,可以忽略这一步,如果大于或等于23,需要做权限的动态申请:

其中123是requestcode,可以根据这个code判断,用户是否同意了授权。如果没有同意,可以根据回调进行相应处理:

@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {}

添加读写文件的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

if(Build.VERSION.SDK_INT>=23){String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};ActivityCompat.requestPermissions(this,mPermissionList,123);}

6、初始化设置

初始化需要在您的Application中调用我们的初始化接口:

private void initUMeng() {PlatformConfig.setWeixin("微信 id", "微信 secret");PlatformConfig.setQQZone("QQ id", "QQ key");// 一些分享配置UMShareConfig config = new UMShareConfig();config.isOpenShareEditActivity(true);config.isNeedAuthOnGetUserInfo(true);config.setSinaAuthType(UMShareConfig.AUTH_TYPE_SSO);UMShareAPI.get(getApplicationContext()).setShareConfig(config);}

U-Share基础功能

分享

友盟分享分为两种形式:

  • 使用分享面板的分享,用户可以调用我们的打开分享面板的方法,点击分享面板的对应平台进行分享。
  • 不使用分享面板的分享,用户可以自己写分享按钮,或者触发事件,然后调用我们的分享方法,进行分享。简而言之,直接分享就是在用户自己的界面组件中插入分享行为,分享面板是打开我们写好的一个界面组件,根据点击事件进行分享。

分享(带面板)

打开分享面板的代码如下:

new ShareAction(MainActivity.this).withText("hello")                    .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN).setCallback(umShareListener).open();

不带面板

new ShareAction(MainActivity.this)
.setPlatform(SHARE_MEDIA.QQ)//传入平台
.withText("hello")//分享内容
.setCallback(umShareListener)//回调监听器
.share();

其中umShareListener为回调监听,构建如下:

 private UMShareListener shareListener = new UMShareListener() {/*** @descrption 分享开始的回调* @param platform 平台类型*/@Overridepublic void onStart(SHARE_MEDIA platform) {}/*** @descrption 分享成功的回调* @param platform 平台类型*/@Overridepublic void onResult(SHARE_MEDIA platform) {Toast.makeText(ShareDetailActivity.this,"成功了",Toast.LENGTH_LONG).show();}/*** @descrption 分享失败的回调* @param platform 平台类型* @param t 错误原因*/@Overridepublic void onError(SHARE_MEDIA platform, Throwable t) {Toast.makeText(ShareDetailActivity.this,"失败"+t.getMessage(),Toast.LENGTH_LONG).show();}/*** @descrption 分享取消的回调* @param platform 平台类型*/@Overridepublic void onCancel(SHARE_MEDIA platform) {Toast.makeText(ShareDetailActivity.this,"取消了",Toast.LENGTH_LONG).show();}};

更多的可以参照友盟文档

https://developer.umeng.com/docs/66632/detail/66639

登录功能

登录使用(获取微信QQ详细信息,用户名等):

        img_qq.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {UMShareAPI.get(LoginActivity.this).getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener);}});img_wechat.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {UMShareAPI.get(LoginActivity.this).getPlatformInfo(LoginActivity.this, SHARE_MEDIA.WEIXIN, authListener);}});UMAuthListener authListener = new UMAuthListener() {@Overridepublic void onStart(SHARE_MEDIA platform) {}@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {String temp = "";for (String key : data.keySet()) {temp = temp + key + " : " + data.get(key) + "\n";}toastMsg(temp);}@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {toastMsg("错误" + t.getMessage());}@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {}};/*** 接收登录返回数据** @param requestCode* @param resultCode* @param data*/@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);}

  

转载于:https://www.cnblogs.com/chhom/p/4794524.html

Android 实现微信QQ分享以及第三方登录相关推荐

  1. 开发中所使用的渠道(统计分析、分享、第三方登录、短信等)

    开发中所使用的渠道(统计分析.分享.第三方登录.短信等) 统计分析 名称 介绍 额外功能 网站 友盟 专攻于数据统计分析,以前是李开复创新工场项目,自从获得A轮候越来越差了!完全免费 错误分析.社会化 ...

  2. android 仿微信头像裁剪,Android仿微信QQ设置图形头像裁剪功能

    最近在做毕业设计,想有一个功能和QQ一样可以裁剪头像并设置圆形头像,额,这是设计狮的一种潮流. 而纵观现在主流的APP,只要有用户系统这个功能,这个需求一般都是在(bu)劫(de)难(bu)逃(xue ...

  3. Yii2 使用 QQ 和 Weibo 第三方登录源码

    我们社区在 yii2-authclient 多次升级后,登录异常.一直想寻求一种通用的方法,尽量不重写 OAuth2, BaseOAuth 以及 OAuthToken 类, 所以本次直接在 initU ...

  4. android标题栏不被顶上去,Android仿微信QQ聊天顶起输入法不顶起标题栏的问题

    在这记录一下输入法弹出的一系列问题,有的输入法弹出就把整个布局弹上去,有的输入法弹出布局不会有变化,有的输入法弹出遮盖输入框等等问题,网上也有很多说加着加那的,但是看一下都不是很完整,解决不了所有问题 ...

  5. 如何快速实现抖音分享与第三方登录?

    准备工作 1.注册抖音的key到抖音开放平台: 2.集成ShareSDK到Mob官网文档页面查看即可: 业务代码 分享要求: 视频: 1.时长不符合要求,最大不能超过1小时,最小值抖音动态配置: 2. ...

  6. 使用友盟快速分享与第三方登录注意事项

    官方说的比较详细,但是就是有些重复,而且有很多坑 坑1.集成后,打开app发现一堆问题(如下) **2016-02-02 10:43:48.978 MShow[778:259789] -canOpen ...

  7. 最近做手机端,GPS,微信QQ分享总结的问题

    Android端 百度地图: 1.libs包中armeabi下liblocSDK4d.so文件丢失,导致百度定位失效. 微信分享: 1.分享App,app的内容(图片加描述)不能超过32kb ,不然无 ...

  8. wechat-0051,微信公众号,第三方登录—扫码绑定

    声明:这边所谓的第三方登录,不是通过网页授权的方式,而是利用生成带参数的二维码,将微信号和平台账号绑定实现.如果你要做的是授权登录,请查看 https://blog.csdn.net/wrongyao ...

  9. wechat-0052,微信公众号,第三方登录—扫码登录

    声明:这边所谓的第三方登录,不是通过网页授权的方式,而是利用生成带参数的二维码,将微信号和平台账号绑定实现.如果你要做的是授权登录,请查看 https://blog.csdn.net/wrongyao ...

最新文章

  1. RPC-client异步收发核心细节?
  2. 中值滤波scipy.signal.medfilt()方法
  3. dedecms调用某一顶级栏目下二级标签
  4. mips汇编计算开方_东南大学计算机系统综合设计MOOC第5期开课
  5. matlab 状态空间的波特图,MATLAB:对于状态空间方程的系统辨识
  6. OE 发邮件 500 Error: bad syntax', Port: 25, ... Error Number: 0x800CCC79
  7. html计算100以内偶数和,学习脚本1:计算100以内奇数和和偶数和 (笔记)
  8. 苹果手机怎么连接不了无线网络连接服务器,苹果手机连接wifi显示无互联网连接怎么办?...
  9. mycncart 之中国银联在线支付方式
  10. 火车头采集的文件发布到服务器上,火车头采集器图片采集上传设置
  11. 温莎大学的计算机专业,温莎大学的计算机专业
  12. MT6575芯片原理图MT6575原理图及量产板
  13. P1978 集合 (set)
  14. android root 模拟点击,免ROOT实现模拟点击任意位置
  15. JAVA WEB整合开发王者归来 -- 读书笔记 by CZF 完整版
  16. 淘宝天猫API_获取商品详情原数据
  17. 实现一个博客系统(前端页面设计)
  18. 汽车专用示波器检测喷油嘴(汽油机)波形信号及分析
  19. 1-1 medium vs. modality笔记
  20. 管易云和金蝶云星空接口打通对接实战

热门文章

  1. 数据库死锁查询及处理
  2. UIButton-内边距
  3. JQUERY使用技巧~总结
  4. [八省联考2018]劈配
  5. NEO改进协议提案2(NEP-2)
  6. 如何Docker化任意一个应用
  7. 不一样的Office 365之 —— Mini Hybrid了解一下(三)迁移邮箱
  8. Aggregate可以做字符串累加、数值累加、最大最小值
  9. [转载] 管Q某犇借的手写堆
  10. Linux系统抓包命令tcpdump使用实例