Android微信分享小结
来源:互联网 发布:js回调函数有什么用 编辑:程序博客网 时间:2024/06/06 05:29
转自:http://blog.csdn.net/qq_27428337/article/details/51501348
说明
只是简单的介绍通过IWXAPI的 sendReq将请求发送到微信终端,分享信息。
基本参考微信开放平台微信开放平台接入指南总结部分API
介绍
微信分享及收藏是指第三方App通过接入该功能,让用户可以从App分享文字、图片、音乐、视频、网页至微信好友会话、朋友圈或添加到微信收藏。简单介绍大概流程
- 微信开房平台注册登录;
- 创建应用(包名可以修改)获取appId;
- 下载libammsdk.jar导入到eclipse/Android Studio中,配置清单文件的相关权限;
- 在使用处如:Activity的onCreate、Fragment的onCreateView处初始化和注册IWXAPI,建立起app与微信的通信;
- 添加分享代码。
初始化注册及分享代码思路
1. 初始化注册
//APP_ID为从官网申请到的appId
privatestaticfinal String APP_ID = "";
//IWXAPI是第三方app和微信通信的openapi接口
private IWXAPI api;privatevoidregToWx(){
//通过WXAPIFactory工厂,获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this, APP_ID,true);
//将应用的appId注册到微信
api.resterApp(APP_ID);
}方法 说明
boolean isWXAppInstalled()
用于检查本机是否安转微信2. 根据不同的分享对象创建不同的媒体对象封装
分享对象 封装对象 示例 不能超过的长度
WXTextObject(String shareText);
或者是用属性public String text
赋值10KB图片WXImageObject构造函数WXImageObject(Bitmap shareImage); WXImageObject(byte[] shareImage)
或者属性public byte[] imageData
封装图片二进制数据、属性public String imagePate
封装本地图片路径以及方法public void setImagePath(String imagePath)封装网络图片
10MB音乐WXMusicObject属性public String musicUrl
属性封装音频网站的URL地址10KB(地址)视频WXVideoObject属性public String videoUrl
属性封装视频链接10KB(地址)网页WXWebpageObject属性public String webpageUrl
属性封装html链接10KB(地址)表情WXEmojiObject构造函数WXEmojiObject(String emojiPath);
和WXEmojiObject(byte[] emojiData);
或者是方法public void setEmojiData(byte[] emojiData)
和public void setEmojiPath(String emojiPath)
这五个类都是Interface WXMediaMessage.IMediaObject
的子类。
3. 创建WXMediaMessage用来接受被封装的对象。
public WXMediaMessage.IMediaObject mediaObject
接受封装的媒体对象 public java.lang.String description
分享显示的消息描述1KBpublic java.lang.String title
分享消息标题512Bytespublic byte[] thumbData
分享显示的缩略图的二进制数据32KB一般缩略图,是将bitmap通过其public boolean compress(CompressFormat format, int quality, OutputStream stream)
方法要压缩后获取。
参考方法
//将bitmap转换为byte[]格式
privatebyte[]bmpToByteArray(final Bitmap bitmap, finalboolean needRecycle){
ByteArrayOutputStream output =new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100, output);
if(needRecyle){
bitmap.recyle();
}
byte[] result = output.toByteArray();
try{
output.close;
}catch(Exception e){
e.printStackTrace();
}
return result;
}
4.创建SendMessageToWX.Req用于发送数据
在这里可是设置是分享给朋友、分享到朋友圈还是收藏。
public WXMediaMessage message
分享请求的WXMediaMessage数据public int scene
发送的目标场景, 可以选择发送到会话 WXSceneSession 或者朋友圈 WXSceneTimeline。 默认发送到会话。public static final int WXSceneTimeline
发送的目标场景,表示发送朋友圈public static final int WXSceneSession
发送的目标场景,表示发送到会话public static final int WXSceneFavorite
发送的目标场景,表示发送到微信收藏public java.lang.String transaction
来自父类BaseReq,对应该请求的事务ID,通常由Req发起,回复Resp时应填入对应事务ID,一般用类型+当前时间毫秒值表示tracsaction生成方法
private String buildTransaction(final String type){
return (type ==null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
5.发送
ByteArrayOutputStream output = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, output);
int options = 100;
DebugUtils.debug("TOOL", "压缩前bmpToByteArray: " + output.toByteArray().length);
while (output.toByteArray().length / 1024 >= IMAGE_SIZE && options != 10) {
output.reset(); //清空output
bmp.compress(Bitmap.CompressFormat.JPEG, options, output);//这里压缩options%,把压缩后的数据存放到output中
options -= 10;
DebugUtils.debug("TOOL", "压缩bmpToByteArray1: " + output.toByteArray().length);
}
DebugUtils.debug("TOOL", "压缩后bmpToByteArray: " + output.toByteArray().length);
if (needRecycle) {
bmp.recycle();
}
byte[] result = output.toByteArray();
try {
output.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
- Android微信分享小结
- Android微信分享小结
- android微信分享
- Android 微信分享
- android微信分享
- Android: 微信分享
- Android微信分享
- android 微信分享
- Android 微信分享
- Android 微信分享
- Android微信分享
- android 微信分享
- Android微信分享
- Android微信分享
- android 微信 以及QQ的SDK接入分享功能遇到的些问题小结
- android分享之微信分享
- android 微信朋友分享,朋友圈分享
- 【Android 分享】ShareSDK微信分享详解
- java通过FTP上传/下载文件
- Markdown文档编写工具
- hdu 2546 详解用0-1背包思想解决问题
- 随笔
- js获取当前页面的url网址信息[转载收藏]
- Android微信分享小结
- ios获取网络图片的尺寸
- 数据仓库建模与ETL的实践技巧
- 揭秘之从RecyclerView滑动监听到Gilde平滑加载图片
- 如何使用 Grape-Swagger 生成 API 文档
- Eclipse去除js(JavaScript)验证错误
- 各种排序算法的Python实现
- PHP的对象和引用(写时复制)
- 从源码分析Handler的postDelayed为什么可以延时?