Android平台的微信分享
来源:互联网 发布:java 函数重载形式 编辑:程序博客网 时间:2024/04/30 23:55
现在微信分享已经是一个app必备的功能,在这里简单的介绍一下最基本的微信分享的功能。
主要流程:
1,在微信开发平台注册账号,这与微信账号不同,微信开放平台
2,在微信开放平台创建你的应用app
3,导入微信sdk
4,启动微信
5,分享文本到好友或朋友圈
6,分享图片到好友或朋友圈
7,分享音频到好友或朋友圈
8,分享视频到好友或朋友圈
9,分享url到好友或朋友圈
10,分享表情到好友或朋友圈
2,在微信开放平台创建你的应用app,建议现在你的IDE中创建你的项目,然后在根据你的项目在开放平台上创建
响应的应用。注意包名必须与你的IDE中项目包名一致,应用签名必须使用开放平台资源下载-签名生成工具生成的签名。
3,导入微信sdk,即将libammsdk.jar考入libs文件中。右击jar-build path - configure build path...
然后在AndroidManifest.xml中添加响应的权限,移动应用接入指南
4,启动微信:
要调用微信sdk中的api,必须先初始化(在以后的api调用中,都默认已经初始化)
private IWXAPI mIWXAPI = null;//定义成员变量 public static final String AppId = "wx94697bac0300039f";//在开放平台创建项目时,获得appId。初始化:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_testweixin); initViews(); mContext = this; mIWXAPI = WXAPIFactory.createWXAPI(mContext, AppId,true); mIWXAPI.registerApp(AppId); registerListener(); }
启动微信的api调用:
Toast.makeText(mContext, ""+mIWXAPI.openWXApp(), Toast.LENGTH_LONG).show();//顺便Tosat了返回的结果。
5,分享文本到好友或朋友圈
/** * 发送消息到微信 * */ private void shareTextToWX() { String text = et_share_content.getText().toString(); WXTextObject textObj = new WXTextObject(); textObj.text = text; WXMediaMessage mediaMsg = new WXMediaMessage(); mediaMsg.mediaObject = textObj; mediaMsg.description = text; // 创建一个请求的对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.message = mediaMsg; // 唯一标示 req.transaction = System.currentTimeMillis() + "text"; // 标示发送给朋友或朋友圈 if (tg.isChecked()) { req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } mIWXAPI.sendReq(req); }
6,分享图片到好友或朋友圈
6.1,二进制图片
/** * 分享二进制 */ private void shareImageToWxWidthBinary() { Options options = new Options(); options.inSampleSize = 3; // 第一步,获取bitmap对象 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.shamo, options); // 第二步,创建Wx。。。Object对象,并包装bitmap WXImageObject wxObj = new WXImageObject(bitmap);// 设置原图 // 第三步,创建WxMediaMessage对象,并包装object对象 WXMediaMessage wxMsg = new WXMediaMessage(); wxMsg.mediaObject = wxObj; // 压缩图像 Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 释放资源 wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 10);// 缩率图大小不能超过32k // 第四步,创建一个请求对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildUniqueTransaction("img"); req.message = wxMsg; // 第六步,设置分享的对象 if (tg.isChecked()) { req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } Toast.makeText(this, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show(); Log.i(tag, "分享成功"); }
6.2,分享本地图片
/** * 分享本地 */ private void shareImageToWXFromLocal() { File parent = Environment.getExternalStorageDirectory(); File file = new File(parent, "shamo.jpg"); if (!file.exists()) { Toast.makeText(this, "文件不存在", Toast.LENGTH_LONG).show(); return; } // 第一步,创建Wx。。。Object对象,并包装bitmap WXImageObject wxObj = new WXImageObject();// 设置原图 wxObj.imagePath = file.getAbsolutePath(); // 第二步,创建WxMediaMessage对象,并包装object对象 WXMediaMessage wxMsg = new WXMediaMessage(); wxMsg.mediaObject = wxObj; Options options = new Options(); options.inSampleSize = 6; // 第三步,获取bitmap对象 Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options); // 压缩图像 Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 释放资源 wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 10);// 缩率图大小不能超过32k // 第四步,创建一个请求对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildUniqueTransaction("img"); req.message = wxMsg; // 第六步,设置分享的对象 if (tg.isChecked()) { req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } Toast.makeText(this, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show(); Log.i(tag, "分享成功"); }
6.3,分享网络图片
/** * 发送图片url */ private void shareImageToWXWidthUrl() { new Thread() { @Override public void run() { String url = "http://g.hiphotos.baidu.com/image/pic/item/960a304e251f95ca2f34115acd177f3e6609521d.jpg"; // 第一步,创建Wx。。。Object对象,并包装bitmap WXImageObject wxObj = new WXImageObject();// 设置原图 wxObj.imageUrl = url; // 第二步,创建WxMediaMessage对象,并包装object对象 WXMediaMessage wxMsg = new WXMediaMessage(); wxMsg.mediaObject = wxObj; Options options = new Options(); options.inSampleSize = 6; // 第三步,获取bitmap对象 Bitmap bitmap = null; try { bitmap = BitmapFactory.decodeStream(new URL(url).openStream()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // 压缩图像 Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 释放资源 wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 10);// 缩率图大小不能超过32k // 第四步,创建一个请求对象 final SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildUniqueTransaction("img"); req.message = wxMsg; // 第六步,设置分享的对象 if (tg.isChecked()) { req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } mHandler.post(new Runnable() { @Override public void run() { Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG) .show(); } }); Log.i(tag, "分享成功"); } }.start(); }
7,分享音频到好友或朋友圈
/** * 分url音频 */ private void shareAudioToWX() { // 第一步创建封装的obj WXMusicObject musicObj = new WXMusicObject(); musicObj.musicUrl = "http://music.baidu.com/song/999104?pst=sug"; // 创建MediaMessage WXMediaMessage wxMsg = new WXMediaMessage(); wxMsg.mediaObject = musicObj; wxMsg.title = "向天再借五百年"; wxMsg.description = "演唱者:韩磊"; // 创建缩略图 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.music); Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 释放资源 wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100); // 创建请求对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildUniqueTransaction("audio"); req.message = wxMsg; if (tg.isChecked()) {// 分享的对象 req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } // 分享 Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show(); }
8,分享视频到好友或朋友圈
/** * 分享视频 */ private void shareVideoToWx() { //创建Obj WXVideoObject video = new WXVideoObject(); video.videoUrl = "http://v.youku.com/v_show/id_XMTM5NjM0NDgyNA==.html?from=y1.7-2"; // WXMediaMessage wxMsg = new WXMediaMessage(); wxMsg.mediaObject = video; wxMsg.title = "午夜花火"; wxMsg.description = "锦尚天舞"; //创建缩略图 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.video); Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 释放资源 wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100); //创建请求对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildUniqueTransaction("video"); req.message = wxMsg; if (tg.isChecked()) {// 分享的对象 req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } // 分享 Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show(); }
9,分享url 到好友或朋友圈
/** * 分享网页 */ private void sharePageToWX() { // 第一步创建WebPage对象 WXWebpageObject webPage = new WXWebpageObject(); webPage.webpageUrl = "http://www.imooc.com/course/list"; // 创建MediaMessage WXMediaMessage wxMsg = new WXMediaMessage(); wxMsg.mediaObject = webPage; wxMsg.title = "慕课网"; wxMsg.description = "在线IT教学网站"; // 创建缩略图 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.muke); Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 释放资源 wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100); // 创建请求对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildUniqueTransaction("video"); req.message = wxMsg; if (tg.isChecked()) {// 分享的对象 req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show(); }
10,分享表情到好友或朋友圈
/** * 分享表情 */ private void shareFaceToWX(){ File parent = Environment.getExternalStorageDirectory(); File file = new File(parent,"face.gif"); //第一步,创建一个封装表情的对象 WXEmojiObject emoji = new WXEmojiObject(); emoji.emojiPath = file.getAbsolutePath(); // 创建MediaMessage WXMediaMessage wxMsg = new WXMediaMessage(); wxMsg.mediaObject = emoji; wxMsg.title = "表情标题"; wxMsg.description = "表情描述"; // 创建缩略图 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.face); Bitmap thumBitmap = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 释放资源 wxMsg.thumbData = bmpToByteArray(thumBitmap, true, 100); // 创建请求对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildUniqueTransaction("face"); req.message = wxMsg; if (tg.isChecked()) {// 分享的对象 req.scene = SendMessageToWX.Req.WXSceneSession; } else { req.scene = SendMessageToWX.Req.WXSceneTimeline; } Toast.makeText(mContext, mIWXAPI.sendReq(req) + "", Toast.LENGTH_LONG).show(); }
其他辅助代码
/** * 将Bitmap转化成一个二进制的数组 * * @param bitmap * @return * @throws IOException */ private byte[] bmpToByteArray(Bitmap bitmap, boolean needRecyle, int scale) { byte[] byteArray = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.PNG, scale, bos); byteArray = bos.toByteArray(); if (needRecyle) { bitmap.recycle(); } bos.close(); } catch (Exception e) { e.printStackTrace(); } return byteArray; } /** * 创建唯一标示 * * @return */ private String buildUniqueTransaction(String str) { String uniqueTransaction = String.valueOf(System.currentTimeMillis()) + str; return uniqueTransaction; }
特别注意,在设置缩略图,缩略图有严格的要求:大小不能超过32k,高宽也有要求,另外限制的还有title、description等参数的。
0 0
- Android平台的微信分享
- 微信分享时平台的选择
- 微信公众平台分享
- 在android平台微信分享图片中带超链接
- Android 使用微信开放平台分享内容到微信
- Android实现微信开放平台、易信平台分享(好友及朋友圈)
- 关于第三方应用(Android平台)通过微信分享文字、图片的问题研究。
- 关于android微信QQ等平台分享功能实现中遇到的问题处理
- 微信公众平台开发-分享接口的实现
- android微信分享
- Android 微信分享
- android微信分享
- Android: 微信分享
- Android微信分享
- android 微信分享
- Android 微信分享
- Android 微信分享
- Android微信分享
- Struts1和Struts2的Action之线程安全
- Lua中获取table长度问题探讨
- Android SDK 开发范例大全 ---3.7简单的按钮事件
- android 转到桌面
- HttpClient
- Android平台的微信分享
- Mysql命令行添加用户
- Linux下使用gdb进行单步调试(一)
- 335x uboot 硬件喂狗
- 1040. Longest Symmetric String (25)Manacher
- 素数筛选法之埃拉托色尼筛
- Unicode编码完全探究
- ARM_s5pv210_arm_7(上)
- WINHTTP的API接口说明。