[转载][原]Android中接入微信客户端心得 – 雪夜&流星 – 博客园.
最近因为工作的项目中要接入微信开放平台,于是一直在做这方面的工作,再加上比较忙,所以只有现在才有机会来记录一下关于程序中接入微信开放平台的事情。
目前Android版只支持SDK接入微信,朋友圈分享功能只有ios支持,相信不久就会有Android版本的支持的。好了,废话不多说,进入话题,详情请移步http://open.weixin.qq.com。
关于程序接入微信客户端,只需要以下四步:
**********华丽的分割线**********
特别要注意签名,一定要和你的APP签名保持一致,否则在你分享的过程中弹不出选择联系人的界面。
*****************************
第一步:申请APP_ID,请移步http://open.weixin.qq.com/app/list/.在这里需要注意的是Android应用除了获取AppID外,还需要在网站上填写包名和签名两个字段,签名的具体生成方法如下:
这里以windows平台的cygwin环境和命令行环境为例,且默认开发者已经安装了jdk,能够正常使用keytool
1、cygwin环境下
在cygwin环境下运行如下命令,输出结果即为signature
keytool -exportcert -alias [alias] -keypass [alias password] -keystore [keystore file path] -storepass [keystore password] | md5sum
例如:当前路径下包含用于对app签名的test.keystore文件,且keystore密码为123456,别名为openapi,别名密码为654321,则运行如下命令:
keytool -exportcert -alias openapi -keypass 654321 -keystore ./test.keystore -storepass 123456 | md5sum
输出结果为:8f88de9693d22430ad7ce55047ec7946
2、命令行环境下
由于命令行下系统没有提供默认的md5sum,建议开发者自行选择合适的md5生成工具(http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=md5 ),生成方法跟cygwin环境下类似,可以先将keytool的输出重定向到文件,然后再用md5生成工具对该文件进行md5处理,获得signature,结果跟cygwin环境下相同。
keytool -exportcert -alias openapi -keypass 654321 -keystore ./test.keystore -storepass 123456 > out.txt
二、下载微信终端开发工具包
三、在代码中使用开发工具包(以上两步详情请移步:http://open.weixin.qq.com/document/gettingstart/android/);
这里主要说明的是本人碰到的几个问题:
1、在接入微信客户端的过程中一定要注意:首先判断是否安装有微信(使用IWXAPI类的isWXAppInstalled()方法),否则你会发现程序是正确的,但是无论如何都不会得到想要的结果,也不会报任何错误。
2、在接入微信客户端的过程中一定要注意:当前的微信版本是否是4.0(使用IWXAPI类的isWXAppSupporAPI()方法),后果如上。
3、在接入微信客户端的过程中一定要注意:分享图片的时候,SDK协议中对缩略图的大小作了限制,大小不能超过32K。另外限制的还有title、description等参数的大小,否则后果如上。
4、如果你的程序需要接收微信发送的请求,或者接收发送到微信请求的响应结果,需要下面3步操作:
a、在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。
b、 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法
c、在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。
d、当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。
最后应该注意:微信开放平台分享图片Url是一个bug,貌似是分享不了的,现在不知道这个bug修复了没有。