android应用中分享到微信好友和朋友圈的实现
2016-03-26 17:17
816 查看
前言
实现分享到微信好友和朋友圈的功能其实很简单,官方文档其实还是比较详细的,只是在创建应用的过程比较费(dan)事(teng),好在微信的审核效率还可以,所以这篇博客简单为大家介绍下这个功能的实现,同时方便自己日后查看。话不多说,下面进入正题。
申请AppID
这部分大家去微信开发者平台注册账号按照提示创建应用就好了,这里是开发者平台的地址。这里要注意的是创建应用是需要提供应用的签名,大家可以在链接里下载签名生成工具安装在手机上获得。
引入jar包
在官方资源下载页下载jar包,然后将包导入工程。
在AndroidManifest.xml中添加权限
注册到微信
要使你的程序启动后微信终端能响应你的程序,必须在代码中你需要的位置向微信终端注册你的id。
分享
1.分享文字
2.分享图片
3.分享网页
其中share的重载函数如下:
只有微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈
微信返回值的接收
如果需要对分享的结果进行处理,那么就需要对微信的返回值进行判断。问题来了,如何获取微信的返回值呢?
在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。
实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法,此处我们用到的是onResp方法。
在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。
项目地址
源码我已上传至本人的Github,欢迎访问指导
实现分享到微信好友和朋友圈的功能其实很简单,官方文档其实还是比较详细的,只是在创建应用的过程比较费(dan)事(teng),好在微信的审核效率还可以,所以这篇博客简单为大家介绍下这个功能的实现,同时方便自己日后查看。话不多说,下面进入正题。
申请AppID
这部分大家去微信开发者平台注册账号按照提示创建应用就好了,这里是开发者平台的地址。这里要注意的是创建应用是需要提供应用的签名,大家可以在链接里下载签名生成工具安装在手机上获得。
引入jar包
在官方资源下载页下载jar包,然后将包导入工程。
在AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
注册到微信
要使你的程序启动后微信终端能响应你的程序,必须在代码中你需要的位置向微信终端注册你的id。
//注册应用id到微信 private void regToWx() { //通过WXAPIFactory工厂,获取IWXAPI的实例 api = WXAPIFactory.createWXAPI(context, APP_ID, true); //将应用的appId注册到微信 api.registerApp(APP_ID); }
分享
1.分享文字
/** * 分享文字到朋友圈或者好友 * * @param text 文本内容 * @param scene 分享方式:好友还是朋友圈 */ public boolean shareText(String text, int scene) { //初始化一个WXTextObject对象,填写分享的文本对象 WXTextObject textObj = new WXTextObject(); textObj.text = text; return share(textObj, text, scene); }
2.分享图片
/** * 分享图片到朋友圈或者好友 * * @param bmp 图片的Bitmap对象 * @param scene 分享方式:好友还是朋友圈 */ public boolean sharePic(Bitmap bmp, int scene) { //初始化一个WXImageObject对象 WXImageObject imageObj = new WXImageObject(bmp); //设置缩略图 Bitmap thumb = Bitmap.createScaledBitmap(bmp, 60, 60, true); bmp.recycle(); return share(imageObj, bmp, scene); }
3.分享网页
/** * 分享网页到朋友圈或者好友,视频和音乐的分享和网页大同小异,只是创建的对象不同。 * 详情参考官方文档: * https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN * * @param url 网页的url * @param title 显示分享网页的标题 * @param description 对网页的描述 * @param scene 分享方式:好友还是朋友圈 */ public boolean shareUrl(String url, String title, Bitmap thumb, String description, int scene) { //初试话一个WXWebpageObject对象,填写url WXWebpageObject webPage = new WXWebpageObject(); webPage.webpageUrl = url; return share(webPage, title, thumb, description, scene); }
其中share的重载函数如下:
private boolean share(WXMediaMessage.IMediaObject mediaObject, Bitmap thumb, int scene) { return share(mediaObject, null, thumb, null, scene); } private boolean share(WXMediaMessage.IMediaObject mediaObject, String description, int scene) { return share(mediaObject, null, null, description, scene); } private boolean share(WXMediaMessage.IMediaObject mediaObject, String title, Bitmap thumb, String description, int scene) { //初始化一个WXMediaMessage对象,填写标题、描述 WXMediaMessage msg = new WXMediaMessage(mediaObject); if (title != null) { msg.title = title; } if (description != null) { msg.description = description; } if (thumb != null) { msg.thumbData = bmpToByteArray(thumb, true); } //构造一个Req SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = String.valueOf(System.currentTimeMillis()); req.message = msg; req.scene = scene; return api.sendReq(req); }
注:如果是分享到朋友圈,scene = SendMessageToWX.Req.WXSceneTimeline;如果分享到好友, scene = SendMessageToWX.Req.WXSceneSession。
判断是否支持分享到朋友圈只有微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈
//判断是否支持转发到朋友圈 //微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈 public boolean isSupportWX() { int wxSdkVersion = api.getWXAppSupportAPI(); return wxSdkVersion >= TIMELINE_SUPPORTED_VERSION; }
微信返回值的接收
如果需要对分享的结果进行处理,那么就需要对微信的返回值进行判断。问题来了,如何获取微信的返回值呢?
在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。
实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法,此处我们用到的是onResp方法。
在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。
IWXAPI api = WXAPIFactory.createWXAPI(this, WeChatShareUtil.APP_ID, false); api.handleIntent(getIntent(),this);
项目地址
源码我已上传至本人的Github,欢迎访问指导
相关文章推荐
- 社交巨头三国杀:微信、WhatsApp、Line到底有啥区别?
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件