实现微信(好友、朋友圈)、QQ(好友、空间)、新浪微博等社会化分享方式。
前言现在的app几乎里面都包括社会化分享和第三方登录这两个功能,前段时间给大家分享了关于几种(第三方登录)的实现,今天再给大家分享关于社会化分享的几种方式。 在关于第三方登录的那篇文章中就已经提到了mob这个第三方平台,我们直接调用其SDK即可。市面上做社会化分享平台的跟人感觉不错的:mob和友盟,根据个人或者公司的需求来选择吧。
正文再做社会化分享的时候,mob里面给我们提供了一篇文章详细的讲解,如何实现的。 既然我们使用的是第三方平台,所以相对于我们自己实现要简单的很多。
到各大平台注册并创建应用1.到mob平台去注册并创建应用
注册和创建应用的步骤我想就不用我多说了。 SDK地址(http://www.mob.com/#/downloadDetail/ShareSDK/android),下载下来发现无法解压(你们可以试一下),联系他们客服,他们说:上传错误,就给我发了一个。我把它和我的Dmeo放在一起,可供下载。 解压压缩包之后,找到ShareSDK for Android下Libs里面的两个文件夹,在后面我们会用到
2.到微信、新浪微博和QQ平台去注册并创建应用获取AppKey
这是开放平台地址:
QQ开放平台地址:http://open.qq.com/ 新浪微博开放平台地址:http://open.weibo.com/ 微信开放平台地址:https://open.weixin.qq.com/
各大开放平台的网址及申请流程汇总:http://bbs.mob.com/forum.php?mod=viewthread&tid=275
3.配置
1).导入SDK到工程文件:
- 新建library形式的module,删掉这个module中src/main目录里面的所有文件(包括删掉java、res、AndroidManifest.xml)
- 复制第三方库的AndroidMainfest.xml、res、src文件(夹)到库目录的src/main目录中
-
将src/main目录下的src目录重命名为java
我们将上图中的两个工程文件新建为两个Library module:ShareSDK和OneKeyShare,记得要将下面的这个文件夹中的东西也要拷到MainLibs这个module的libs文件夹下:
然后,需要注意的是,OneKeyShare这个module是依赖于ShareSDK这个module;而app这个module是依赖于OneKeyShare这个module。
2).添加应用信息:
先在app这个module(即我们这个项目的module)下新建一个assets文件夹(即第三方资产目录),操作如下:
然后,我们将上图中的ShareSDK.xml文件复制到assets目录下。
紧接着开始修改ShareSDK.xml文件中的代码。这里以新浪微博为例:
Enable字段表示是否想分享到该平台 RedirectUrl字段表示是否使用客户端分享
注:如果选择客户端分享,而手机没安装客户端则会使用网页版进行授权(除微信外)
新浪微博的回调地址RedirectUrl这个字段的值就是我们后台项目中的应用信息——>高级信息——>OAuth2.0 授权设置中的授权回调页这个字段,需要我们填写一个有效的地址就可以,例如下图:
注:如果RedirectUrl这个字段不填或填写不对会报以下错误:
3).配置AndroidManifest.xml:
a. QQ相关配置:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
注意: MobUIShell的路径是固定的,一定要在“cn.sharesdk.framework”下,因为它在Share-Core中。
之后,需要对上面的代码进行以下修改: 上图中,将红框部分的数字改成在腾讯开放平台申请到的AppId即可。
b.微信相关配置:
在你的build.gradle的applicationId相应目录下新建一个wxapi目录,在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity(例如应用程序build.gradle的applicationId为com.aohuan.jinghai_lifee,则新添加的类如下图所示) : WXEntryActivity.java的代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
同时,在清单文件中进行声明:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4).添加代码
集成ShareSDK至少需要在两个位置添加代码,包括:
a.在项目的入口Activity,在其onCreate方法中插入下面的代码进行初始化:(这个方法越早调用越好)
- 1
如果不在所有的ShareSDK的操作之前调用这行代码,就会抛出空指针异常。
b.在项目出口Activity的onDestroy方法中第一行插入下面的代码:
- 1
上方这行代码会结束ShareSDK的统计功能并释放资源。如果这行代码没有被调用,那么“应用启动次数”将会不准确,因为应用可能从来没有被关闭过(注:这一行代码我还是没用到,不知道会造成什么实质性的后果)。
注意:initSDK是可以重复调用的,其实ShareSDK建议在不确定的时候调用这个方法来保证ShareSDK被正确初始化。而stopSDK一旦被调用了,就必须重新调用initSDK才能使用ShareSDK的功能,否则会出现空指针异常。
在代码中调用此方法,即可打开一键分享功能进行分享:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
5).主代码
MainActivity.java:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
提示:如果imagePath和imageUrl同时存在,imageUrl将被忽略。
6).运行效果
其它分享方式我就不列出来了 如果你还需要做一些细微的调整,那就需要多看官方的东西了,这里贴出两个链接:
官网博客: http://mob.com/index.php/share/index/media/cid/11 【ShareSDK】常见问题汇总:http://bbs.mob.com/forum.php?mod=viewthread&tid=30&extra=page%3D1 注:如果想要调整弹出Dialog的布局样式,参考http://www.cnblogs.com/smyhvae/p/4585340.html的第七条
注:由于我的源代码里面涉及到客户的信息,所以AppKey、AppSecret等信息,被我删掉了,如果想看我的Demo效果,需要修改小部分我的代码: 1.把我的com.example.wxapi换成你的applicationId(对应的包名).wxapi 2.修改manifest.xml里面对应的信息:
3.修改ShareSDK.xml里面对应的信息:
记得一定要打包进行测试,这样就可以了!!
参考文章
demo下载地址