cncici 2015-01-16
转于:http://blog.csdn.net/dalancon/article/details/39322159
-------------------------------------------------------------------------------------
公司让做一个微信分享的功能:就是将一些文本分享给你的微信好友或者微信的朋友圈。
由于之前有过做新浪微博、QQ、人人网第三方登录的经验,所以我很自然的就去微信的开发者平台去下SDK,注册我的应用。麻烦的事情就来了。
微信的官方demo想运行起来真心难啊,而且官网上面居然资料很少。坑。。。。。。。。
下面我来说一下运行微信的官方demo:
首先去开发者平台的资源中心-->点击资源下载-->选择android资源下载-->下载范例代码(HelloWeixin@Android)。
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,而且什么提示都没有,简直垃圾。
经历了这些,我以为应该可以自己集成了吧。可悲的是我整了两天都没成功分享。我确定了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);
}
大功告成了
发现的问题:
分享网址里面 带有冒号: 点号. 会出现乱码。
使用 微博、QQ、微信、钉钉 原生 SDK 接入,提供这些平台的登录、分享功能支持。针对业务逻辑对各个平台的接口进行封装,对外提供一致的表现,在减轻接入压力的同时,又能获得原生 SDK 最大的灵活性。