android 社会化分享集成

转于:http://blog.csdn.net/dalancon/article/details/39322159

 

-------------------------------------------------------------------------------------

 

公司让做一个微信分享的功能:就是将一些文本分享给你的微信好友或者微信的朋友圈。

由于之前有过做新浪微博、QQ、人人网第三方登录的经验,所以我很自然的就去微信的开发者平台去下SDK,注册我的应用。麻烦的事情就来了。

 

微信的官方demo想运行起来真心难啊,而且官网上面居然资料很少。坑。。。。。。。。

运行微信的官方demo

下面我来说一下运行微信的官方demo:

首先去开发者平台的资源中心-->点击资源下载-->选择android资源下载-->下载范例代码([email protected])。

 

1、将该项目导入eclipse。

2、导入的目录结构

 

3、现在运行肯定不行的。点击Windows-->Preference

 

 

将demo中自带的debug.keystore的路径写入到Custom debug deystore.

4、现在就可以运行了。

 

我真是服了微信了,做的简直不人性化。用官方的集成简直就是要命。

 

为什么要设置Custom debug deystore??

因为微信有自身的限制。它需要你在注册该应用的时候,填写应用签名,这个签名就是你要最终打包发布使用的签名的加密MD5值。具体就是你先用这个签名打个包,然后在你的手机里面运行,然后在微信的官网下一个获取签名MD5值的工具(开发者平台-->资源中心-->资源下载-->android资源下载-->签名生成工具)。

官方的demo如果不设置这个Custom debug deystore,默认是使用eclipse提供的签名,这个签名和demo的本身的签名肯定不一致的。所以我们分享的时候是不成功的。

 

再吐槽一下,微信的接口写的真是奇葩,我分享不成功还返回ture,而且什么提示都没有,简直垃圾。

 

ShareSDK集成步骤

经历了这些,我以为应该可以自己集成了吧。可悲的是我整了两天都没成功分享。我确定了APPID、签名、应用包名、应用名称与注册的信息一模一样,TMD就是分享失败。最后没办法,我只能放弃了官方的SDK,使用了ShareSDK集成。

 

不得不说真心强大。微信、易信、微博都可以集成。官网地址:http://mob.com/

点开选择SDK下载-->ShareSDK社会化分享-->ShareSDK For Android.

 

 

强大的一笔。刚看见这个的时候不知从哪边下手。

然后参考http://wiki.mob.com/Android_ShareSDK%E5%AE%8C%E6%95%B4%E7%9A%84%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3

这个集成文档,基本就可以搞定了。大致说一下步骤:

首先必须要在ShareSDK里面注册你的应用,非常简单的,只填写基本信息就行,一路next获取Appkey、App Secret。

 

1、下载SDK页面选择"打包下载SDK",这个下载的里面包含依赖的项目

 

将下载的文件解压得到:

 

那两个依赖项目在Libs文件夹下,引入这两个项目作为依赖项目。

Eclipse引用我就不说了,比较简单。我说一下AndroidStudio引用依赖项目。简直逆天了。复杂的一笔。

进入应用设置界面

 

 

选中左侧Module标签,点击上面的加号。

选择Import Module,选择要添加的两个依赖项目,一路next。

选择右侧的加号

 

选择Module Dependency...然后选中MainLibs和OneKeyShare。加入好了之后发现OneKeyShare报错。因为缺少ShareSDK-Core-2.3.12.jar。在MainLibs项目的libs文件右键-->AddAs Library

在弹出的对话框中,中间的一定要注意Level一定要选择Module Library,这样的话这个jar就可以在主项目中引用了。


 

2、Res目录下面有一个ShareSDK.xml。将这个文件放在android的assets目录下。

修改文件,拿我的文件举例:

我只做了微信好友分享、易信的好友分享、易信的朋友圈分享。所以我的内容如下:

 

每一个要集成的功能都要到这里面注册的。

这个里面节点意思:

1、Id节点:整形,数值越大,就出现在分享的选择列表的后面。

2、AppId节点:就是你在微信或者易信官网注册应该获取的AppID

3、BypassApproval节点:是绕过审核的标记,设置为true后AppId将被忽略,故不经过

                   审核的应用也可以执行分享,但是仅限于分享文字和图片,不能分享其他类型,

                   默认值为false。此外,微信收藏不支持此字段。

4、Enable节点:表示此平台是否有效,布尔值,默认为true,如果Enable为false,即便平台的jar包已经添加到应用中,平台实例依然不可获取。

5、AppKey节点:就是你在ShareSDK上面注册获取的Appkey。

 

到了这里,基本的东西就配好了。下面开始下载要集成平台的jar包。

点开之前的下载SDK的页面,选择需要的平台,比如微信、易信。

微信的jar包:

 

 

我们不需要收藏功能所以将除了ShareSDK-Wechat-Favorite-2.3.12.jar以外的包加入到项目中。

易信的jar包:

 

这些全部放入项目中。

 

下面就可以写分享代码了

private void showShare() {

       ShareSDK.initSDK(this);

       OnekeyShare oks = new OnekeyShare();

       //关闭sso授权

       oks.disableSSOWhenAuthorize();

       //分享时Notification的图标和文字

       oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));

       // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用

       oks.setTitle(getString(R.string.share));

       // titleUrl是标题的网络链接,仅在人人网和QQ空间使用

       oks.setTitleUrl("http://sharesdk.cn");

       // text是分享文本,所有平台都需要这个字段

       oks.setText("我是分享文本");

       // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数

       oks.setImagePath("/sdcard/test.jpg");

       // url仅在微信(包括好友和朋友圈)中使用

       oks.setUrl("http://sharesdk.cn");

       // comment是我对这条分享的评论,仅在人人网和QQ空间使用

       oks.setComment("我是测试评论文本");

       // site是分享此内容的网站名称,仅在QQ空间使用

       oks.setSite(getString(R.string.app_name));

       // siteUrl是分享此内容的网站地址,仅在QQ空间使用

       oks.setSiteUrl("http://sharesdk.cn");

       //启动分享GUI

       oks.show(this);

   }

 

大功告成了

 

发现的问题:

分享网址里面 带有冒号:  点号. 会出现乱码。