一、准备
1、
①其实Android系统已经为我们提供了一个分享功能,通过发送一个隐式的intent,intent类型叫share,带入我们想要分享的数据,就会遍历系统中所有可以分享的应用,实现数据的分享。第二种就是接入想要分享的平台,接入对应平台的jar包,调用对应的api,完成对应的分享。这两种方式各有什么优缺点呢?采用系统的intent的缺点是无法自定义我们的UI,所以如果调用系统的分享的话,往往是弹出一个对话框来供我们选择,而且手机厂商的不同,实现也不同。而使用对应平台,缺点在于比较复杂,即每个平台都需要对接,而且每个平台的api也不一样。所以,还有第三种方式,使用中间件平台,例如share SDK以及友盟SDK,他们的作用就是适配了各个平台,我们只需要传必要的参数和事件回调到share SDK 和友盟SDK即可。
②因为不能自定义UI
③直接调用是可以的,但是应用中可能有多个需要分享的地方,实际过程中可能需要分享的地方更多,如果不封装可能有很多冗余代码,以后修改起来也非常不方便,所以需要封装
2、
二、share SDK开发环境搭建
1、shareSDK平台注册,SDK下载,集成到AS
2、拷贝所需要对应平台的jar包到libs文件夹下
3、拷贝ShareSDK.xml配置文件到assets文件夹下
4、到对应平台申请appkey或appid,填入对应的位置
appid和appkey是在对应平台创建好应用后分配的,用来标识项目的唯一性。enable是shareSDK它的一个配置,如果要用这个平台,则置为true, sharebyappclient=“true”会优先走客户端的分享,即手机客户端,如果手机客户端没有的话会走对应的网址。
微信相关的还有一个字段叫 BypassApproval="true",一般情况下置为true,因为微信分享正常情况下一般要打包签名后才可以去测试分享功能是否可用,但是测试过程中不可能改一点东西就去改签名包去测试,所以shareSDK为我们提供了一个绕过微信签名的一个机制,就是将BypassApproval="true",这样就可以绕过微信打签名包才能测试的机制。但是只能验证分享图片到朋友圈或者微信好友,其它分享还是不成功的。
注:能在配置文件中配置解决的问题,就不要在代码中配置
5、在Android mainfext.xml中添加一些配置项
微信分享必需添加一个微信分享回调Activity,名字可以修改
而且微信分享activity位置也是有讲究的,必需放在包名wxapi包下的WXEntryActivity中,位置绝对不能改变,否则微信分享是成功不了的
注:如果在开发中第三方需要在mainfext.xml中进行配置,那么一定要以注释进行开头,这样可以保证这一部分就是相关SDK的一个配置。这样,当到一个新项目中时,直接copy即可。
要实现分享成功,还需要添加相应的网络权限
三、分享API串讲
1、application中初始化
2、
其实如果不封装的话,sharSDK封装地也比较完整了,但是如果用的地方多的话,每个平台都需要写这么多代码,叠加起来代码的冗余量还是非常多的,所以还是需要对其进行二次封装,让其更加方便我们的使用。这也是我们使用shareSDK的原因,本身封装性就非常好了。
四、分享组件封装思路
1、分享封装思路
实际开发中不会这么使用,因为会造成代码冗余。实际开发中,通过调用一个类的方法,传入需要分享的数据和一个监听,这样就比较简单了,只要在需要调用的时候只要调用这个类的一个方法就可以了
2、思维导图
四、shareManager的封装
1、
支持的平台类型和分享入口
获取要分享的平台
添加回调,完成分享
封装初始化方法
在application中进行调用
2、
五、UI层封装
1、创建dialog,初始化组件
2、将dialog设置到底部
3、完成分享方法