天天看点

在Android Studio中使用shareSDK进行社会化分享(图文教程)

【前言】

如今的app当中,几乎都包含了社会化分享的功能,来两张图see 一 see:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

好在这种分享功能已经有第三方平台帮我们做好了,我们直接调用其sdk即可。市面上做社会化分享平台的比较好平台的有:mob等。

在Android Studio中使用shareSDK进行社会化分享(图文教程)

怎么样?光看这个网站的首页就碉堡了吧?好了不废话,进入正题。

开发环境:

ide版本:android studio 1.2

物理机版本:win7旗舰版(64位)

一、获取sdk并解压:

打开网站首页后,上图中的箭头处正是我们所需要的sharesdk。那我们就先将sdk下载下来吧。

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中,点击箭头处,进行下载。

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中的箭头处所示,我们需要的是android的sdk,所以将其下载下来。

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中,单机箭头处正式下载,弹出如下界面:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中,选择我们所需要的社交平台进行下载吧,这里面,我选择:新浪微博、微信、qq、qq空间。

下载完了之后,解压,就是下面这个样子:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

sharesdk在“sharesdk for android”目录下,此目录中的“libs”包含了“mainlibs”文件夹(核心库)和“onekeyshare”文件夹(快捷分享库)。截图如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

“sharesdk for android services”包含sharesdk已经发布的“插件服务”,暂时只提供了“评论与赞”服务,我们不需要这个哈。

二、在sharesdk官网进行注册:

在官网注册账号获得sharesdk的appkey:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

然后选择应用名称和平台:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

应用创建成功后,效果如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中的app key要记住,因为我们稍后要用。

单击红框部分的“应用信息”,可以添加一些信息,这些信息可有可无哈。

二、在各大社交平台注册:

如果你想分享到新浪微博,就必须在新浪开放平台上将这个app注册一下,不然新浪是不会无缘无故让你分享的;分享到微信和qq的道理是一样的。

参考链接:

1、新浪开放平台注册:

图文操作如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中,填好应用名称,选好“应用平台”(当然也可以同时勾选"iphone",这样的话,android平台和ios平台就可以共用同一个appid了),然后单击“创建”即可。

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中,单击左侧的“基本信息”,可以看到新浪微博的app key、app secret(红框部分),这个信息稍后需要填到我们工程中的sharesdk.xml中对应的<sinaweibo>标签中去。

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中,单击左侧的“高级信息”,然后填写红框部分的网址,填的这个网址稍后需要填到我们工程中的sharesdk.xml中对应的<sinaweibo>标签的redirecturl属性中去。

,不然分享的时候很可能会报下面的错误:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

这个错误可以参考下面这个链接:

至于微信开放平台、qq空间开放品台的申请是类似的,只不过微信开放平台的审核是需要时间的。

另外需要说明的是:

  在新浪微博和qq的开放平台注册的应用,即使审核不通过,也可以得到appkey进行分享;而微信开放平台申请的应用需要审核成功之后才能得到appkey进行分享(我自己是等了一天的时间才得到了app审核通过的通知)

2、微信开放平台注册:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

核心是要填“应用签名”,也就是下面这张图:(签名工具的apk安装包见附件)

在Android Studio中使用shareSDK进行社会化分享(图文教程)

3、腾讯开放平台的注册:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

四、各种配置:

1、导入sdk到工程文件:

打开android studio,先新建一个名为sharedemo的project,然后开始导入sdk。

新建一个library形式的module,删掉这个module中src/main目录里面的所有文件(包括删掉java、res、androidmanifest.xml)

复制第三方库的androidmainfest.xml、res、src文件(夹)到库目录的src/main目录中

将src/main目录下的src目录重命名(shift+f6)为java

在Android Studio中使用shareSDK进行社会化分享(图文教程)

我们将上图中的两个工程文件新建为两个library module:sharesdk和onekeyshare,记得要将下面的这个文件夹中的东西也要拷到mainlibs这个module的libs文件夹下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

然后,需要注意的是,onekeyshare这个module是依赖于sharesdk这个module;而app这个module是依赖于onekeyshare这个module。

2、添加应用信息:

先在app这个module(即我们这个项目的module)下新建一个assets文件夹(即第三方资产目录),操作如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

然后,我们将上图中的sharesdk.xml文件复制到assets目录下。

紧接着开始修改sharesdk.xml文件中的代码。这里以新浪微博为例:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

代码解释:

    02行:还记得之前说过appkey有用吗?这里就派上用场了,填上去就行了。

    08行:需要先事先在新浪微博的开发者平台注册得到appkey。也就是上面第三段中提到的内容。

    12行:如果不想用这个分享平台,可以将其设置为false。

总结:

sharesdk的每一个平台都具备sortid、id、enable字段,除此之外的字段(如新浪微博的appkey、appsecret、redirecturl、sharebyappclient等字段)需要到目标平台上注册应用以后得到,请正确填写这些字段的数据,否则sharesdk无法完成授权,则后续的其它操作也将无法执行。

3、配置androidmanifest.xml:

(1)添加如下权限:(和application节点并列)

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

(2)在application节点下注册下面的activity:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

注意: mobuishell的路径是固定的,一定要在“cn.sharesdk.framework”下,因为它在share-core中。

之后,需要对上面的代码进行以下修改:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中,将红框部分的数字改成在腾讯开放平台申请到的appid即可。

如果项目集成了微信,还需要添加以下wxentryactivity,不然的话,mob后台无法做微信的分享统计:(在工程的包下新建wxapi目录再放置wxentryactivity)

wxentryactivity.java的代码如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

同时,在清单文件中进行声明:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

如果项目继承了易信,方法类似,这里就不贴出来了,现在谁还用易信啊,哈哈哈···

4、添加代码:

集成sharesdk至少需要在两个位置添加代码,包括:

(1)在项目的入口activity,在其oncreate方法中插入下面的代码进行初始化:(这个方法越早调用越好)

如果不在所有的sharesdk的操作之前调用这行代码,就会抛出空指针异常。

(2)在项目出口activity的ondestroy方法中第一行插入下面的代码:

 上方这行代码会结束sharesdk的统计功能并释放资源。如果这行代码没有被调用,那么“应用启动次数”将会不准确,因为应用可能从来没有被关闭过(注:这一行代码我还是没用到,不知道会造成什么实质性的后果)。

注意:initsdk是可以重复调用的,其实sharesdk建议在不确定的时候调用这个方法来保证sharesdk被正确初始化。而stopsdk一旦被调用了,就必须重新调用initsdk才能使用sharesdk的功能,否则会出现空指针异常。

在代码中调用此方法,即可打开一键分享功能进行分享:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

上面的这些代码是官方给的,实际项目中可以放在按钮的点击事件中,根据需要去填写。

    14行:settext是需要分享的文本内容

    16行:setimagepath是需要分享的本地图片。(如果是在真机当中,需要通过api去拿sd卡的路径,即environment.getexternalstoragedirectory()这个api)

五、正式开始写代码:

(1)activity_main.xml布局文件:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

其实就是加了个button按钮,用做分享的事件触发。

(2)sharesdk.xml中和新浪微博、微信、qq有关的配置:

新浪微博:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

02行和03行的appkey和appsecret要换成你自己在新浪开放平台注册的信息。

06行:redirecturl里面的网址要改成可用的url地址,并且与新浪开放平台的授权回调页的网址一致,也就是下面这个:(在第三段中已经强调过了)

在Android Studio中使用shareSDK进行社会化分享(图文教程)

07行:如果设置为true,那就会用新浪微博的app来进行分享操作;如果你没有安装新浪微博的app,很可能会导致分享失败。如果设置为false,那就会用网页版的新浪微博进行分享。

微信和qq的配置信息差不多,就不赘述了。

(3)mainactivity.java:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

 第39行中,如果不想用本地的图片,而是采用分享网络的图片,可以将这一行去掉,改为第42行。

提示:如果imagepath和imageurl同时存在,imageurl将被忽略。

六、运行效果:

1、分享到新浪微博:(不采用客户端进行分享的方式)

运行效果如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

 第一次分享时,系统会弹出页面让你填写你自己的新浪微博账号,我第一次运行的时候已经填写过了。

现在打开新浪微博,分享成功了:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

什么?你觉得分享的图片太小了不够刺激?那点开大图爽一下吧:(确实是分享成功了滴)

在Android Studio中使用shareSDK进行社会化分享(图文教程)

settext属性对应的是:“我是分享文本,啦啦啦~”

setimagepath属性对应的是需要分享的图片,也就是上图中的大美女。

2、分享到新浪微博:(采用客户端进行分享的方式)

运行之后,进行分享操作的界面如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

分享成功之后的效果如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图的左下角显示的是说“来自未通过审核应用”,但有时候会显示手机的名字,很奇怪吧?咨询了一下官方客服(官方客服的解答太耐心了,感激涕零),情况是这样的:

如果不用客户端进行分享(即sharebyappclient="false"):

  app在新浪开放平台没通过审核,就会显示“未通过审核应用”

  app在新浪开放平台通过了审核,就会显示具体的app的名字

如果用客户端进行分享(即sharebyappclient="true"):

  app在新浪开放平台没通过审核,就会显示“未通过审核应用”或者手机型号

  app在新浪开放平台通过了审核,显示的是手机型号。效果如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

3、分享到微信:

我这里采用的是不绕过审核的方式来进行分享(即sharesdk.xml中关于微信的部分中,bypassapproval="false")。一般也是采取这种方式进行分享的吧。到底要不要绕过,看官网博客便知:

提示:记得要将生成签名的apk安装到手机,不然无法分享到微信哦(好吧,仔细看微信开放平台的注册流程就行了)。

3.1  分享到微信好友:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

留在微信后,效果如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

3.2 分享到微信朋友圈:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

4、分享到qq、qq空间:(和分享到微信的过程和界面一致)

运行效果:

4.1、分享到qq好友:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

4.2、分享到qq空间:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

动态效果图如下:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

如果你还需要做一些细微的调整,那就需要多看官方的东西了,这里贴出两个链接:

【工程文件】

<a href="http://download.csdn.net/detail/smyhvae/8818779" target="_blank">2015-06-18-sharesdk做分享功能.rar</a>

七、在onekeyshare这个module中对分享界面进行略微修改:

由于我们使用的是onekeyshare一键分享功能,于是分享界面在onekeyshare这个module中已经定制好了,现在可以进行略微的修改:

1、将每行多个分享按钮改为每行两个分享按钮:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

这样的话,每排就是固定为两个分享按钮:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

2、修改分享界面的背景:

可以在下面这个位置加背景:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

上图中, 添加红框部分的代码即可。

八、完全自定义分享界面:

现在我想自定义成下面的这样的界面:

在Android Studio中使用shareSDK进行社会化分享(图文教程)

此时,由于我们是完全自定义界面,所以我们在集成的时候不需要集成onekeyshare模块(快捷分享)。也就是说,我们只需要让app这个module依赖于sharesdk这个module就行了。

至于自定义的分享按钮的布局,我们需要一个gridview

代码实现:

(1)share_item.xml:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

(2)share_dialog.xml:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

其实就是一个gridview和一个取消按钮。

为了达到ui上的效果,上面这两个布局文件的padding和margin我调了两个小时。唉···

(3)sharedialog.java:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

第31行是设置对话框弹出的位置。

(4)mainactivity.java:

在Android Studio中使用shareSDK进行社会化分享(图文教程)
在Android Studio中使用shareSDK进行社会化分享(图文教程)

如果是分享到微信和朋友圈,那么第81行和第97行一定不能少哦,不然分享失败。

在Android Studio中使用shareSDK进行社会化分享(图文教程)

继续阅读