微信插件开发手记-聊天界面传送任意类型文件
2014-07-03 19:32
218 查看
第一次在CSDN上面献丑,望各路大神多多批评指正,感激不尽!
为了查看方便,现将关键词列举如下,要查看某个部分直接Ctrl+F,查找相应关键词就跳过去了。
【目的】 【微信审核】 【搭建项目】
项目完整源码请见:https://github.com/XiaoWenHan/Anytransforwechat
【目的】:
好,这是整篇文章唯一一个看似废话的部分,毕竟它才是整个项目得以完成并分享的源动力。最初的想法是由于目前微信移动客户端无法给好友发送文件,除了图片、语音、视频。当然,询问了很多人之后答案是Web版可以,可是每次传文件都要去Web客户端也太麻烦了一些,于是萌发了要做一个文件传送的微信插件的想法,暂定为《微信随心传 1.0 Beta》。功能很明确,就是向好友分享文件,其他的功能就没有了。虽然功能很单一,但希望它能为更多的人提供方便。
【微信审核】
这个是前提,只有通过审核,才能得到APP_ID;只有得到APP_ID,才能进行开发,才能在微信的附件栏里成功调用这个应用。具体方法如下:
1、登录微信开放平台:https://open.weixin.qq.com/,注册开发者帐号;
2、创建一个项目,使用微信开放平台提供的签名生成工具,生成此项目的签名信息(就是Debug Key);
3、在移动应用板块,按照网页上的向导创建移动应用,填上相关信息,等待审核通过(这个过程不会太慢,差不多第三天就会通过,运气好的话几个小时而已);
一旦通过审核,会有通知,在管理中心的已通过审核部分,会看到我们创建好的应用信息,我们可以通过查看详情找到开发所需的APP_ID。
【搭建项目】
从这个部分开始,就是真正编码的过程了。
1、首先从官方提供的SDK Demo项目中找到libammsdk.jar,复制到我们的项目lib文件夹中,这个Jar包是实现所有功能的核心。
2、修改AndroidManifest.xml文件,添加一个Activity。路径固定为包名后跟".wxapi.WXEntryActivity"。具体代码块如下:
3、创建第2步中被添加的Activity,该Activity必须实现IWXAPIEventHandler。这时,该类会提示我们要去Override onReq()和onResp()方法,这里我们主要是重写onReq()方法即可;
4、声明一个全局的IWXAPI对象的变量,在onCreate方法中进行初始化。代码块如下:
5、在onReq回调方法里,根据微信不同的响应类型分别做操作。类型我们可以通过req.getType()得到,具体代码块如下:
6、获取到文件路径后,使用下面的方法,即可发送指定的文件:
注:sendFile是File类型的变量,是要发送的文件;
7、找到接收到的文件的路径的方法见此:
第一次在CSDN上分享,希望朋友们多多捧场,同时希望各位多多指教!
为了查看方便,现将关键词列举如下,要查看某个部分直接Ctrl+F,查找相应关键词就跳过去了。
【目的】 【微信审核】 【搭建项目】
项目完整源码请见:https://github.com/XiaoWenHan/Anytransforwechat
【目的】:
好,这是整篇文章唯一一个看似废话的部分,毕竟它才是整个项目得以完成并分享的源动力。最初的想法是由于目前微信移动客户端无法给好友发送文件,除了图片、语音、视频。当然,询问了很多人之后答案是Web版可以,可是每次传文件都要去Web客户端也太麻烦了一些,于是萌发了要做一个文件传送的微信插件的想法,暂定为《微信随心传 1.0 Beta》。功能很明确,就是向好友分享文件,其他的功能就没有了。虽然功能很单一,但希望它能为更多的人提供方便。
【微信审核】
这个是前提,只有通过审核,才能得到APP_ID;只有得到APP_ID,才能进行开发,才能在微信的附件栏里成功调用这个应用。具体方法如下:
1、登录微信开放平台:https://open.weixin.qq.com/,注册开发者帐号;
2、创建一个项目,使用微信开放平台提供的签名生成工具,生成此项目的签名信息(就是Debug Key);
3、在移动应用板块,按照网页上的向导创建移动应用,填上相关信息,等待审核通过(这个过程不会太慢,差不多第三天就会通过,运气好的话几个小时而已);
一旦通过审核,会有通知,在管理中心的已通过审核部分,会看到我们创建好的应用信息,我们可以通过查看详情找到开发所需的APP_ID。
【搭建项目】
从这个部分开始,就是真正编码的过程了。
1、首先从官方提供的SDK Demo项目中找到libammsdk.jar,复制到我们的项目lib文件夹中,这个Jar包是实现所有功能的核心。
2、修改AndroidManifest.xml文件,添加一个Activity。路径固定为包名后跟".wxapi.WXEntryActivity"。具体代码块如下:
<activity android:name=".wxapi.WXEntryActivity" android:exported="true" </activity>上述两个Activity属性固定,不要做任何改变。但不妨碍继续添加属性,比如加一个"android:label="@string/app_name"",是没有关系的;
3、创建第2步中被添加的Activity,该Activity必须实现IWXAPIEventHandler。这时,该类会提示我们要去Override onReq()和onResp()方法,这里我们主要是重写onReq()方法即可;
4、声明一个全局的IWXAPI对象的变量,在onCreate方法中进行初始化。代码块如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); iwxapi = WXAPIFactory.createWXAPI(WXEntryActivity.this,MainActivity.APP_ID); iwxapi.handleIntent(getIntent(), this); }注意:iwxapi为已声明但尚未初始化的变量;
5、在onReq回调方法里,根据微信不同的响应类型分别做操作。类型我们可以通过req.getType()得到,具体代码块如下:
@Override public void onReq(BaseReq req) { switch (req.getType()) { case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX: // 选取文件发送 case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX: // 打开文件 } }根据注释信息在相应的位置进行相应的操作即可;
6、获取到文件路径后,使用下面的方法,即可发送指定的文件:
WXAppExtendObject wxAppExtendObject = new WXAppExtendObject(); wxAppExtendObject.filePath = sendFile.getPath(); WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = wxAppExtendObject; SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = getTransaction(); req.message = msg; req.scene = SendMessageToWX.Req.WXSceneSession; iwxapi.sendReq(req);
注:sendFile是File类型的变量,是要发送的文件;
7、找到接收到的文件的路径的方法见此:
WXAppExtendObject wxAppExtendObject = (WXAppExtendObject) ((((ShowMessageFromWX.Req) req).message.mediaObject)); String filePath = wxAppExtendObject.filePath;到此,获取到文件路径,可以通过该路径进行自定义的操作了。特别注意,这里的文件路径通常是微信的缓存路径,因此基本上无需考虑文件重名问题了。
第一次在CSDN上分享,希望朋友们多多捧场,同时希望各位多多指教!
相关文章推荐
- Android开发学习之仿微信聊天界面的实现
- ios开发仿写微信视频聊天界面
- Andorid开发中仿微信聊天界面中遇到的问题
- 【原创】聊天+传送文件+设置字体及颜色(vs2010+mfc开发)
- eclipse插件开发:把自定义的文件类型使用xml编辑器打开
- Android 中的一些开发技巧(延迟启动,文件写出,透明状态栏,任意界面退出)
- Android:日常学习笔记(8)———开发微信聊天界面
- Android"挂逼"修炼之行---微信定位聊天记录中照片的位置信息插件开发详解
- 使用VIM开发软件项目 - (8) 开启文件类型检测
- 下载任意类型的文件
- 在SQL Server中保存和输出任意类型的文件
- Java Socket简单聊天和文件传送工具(更新中)
- 使用VIM开发软件项目 - (5) 使用tag文件和taglist插件 (二)
- 菜鸟学Python(11):在Django中怎么下载任意类型的文件?
- Eclipse插件开发中对于Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)
- Eclipse plugins 插件开发学习 - 在 plugin.xml 中使用资源文件 plugin.properties
- 一个spring+hibernate开发的小程序的修改(其中配置文件使用的是HibernateSynchronizer插件生成)
- 一个jsp文件实现从数据库中下载任意类型文件
- 在SQL Server中保存和输出任意类型的文件
- 在SQL Server中保存和输出任意类型的文件