android之微信分享图片
16lz
2021-01-26
android之微信分享图片
微信图像分享分为三类1、二进制图片2、本地图片3、URL地址图片
XML分析:三个Button 添加点击事件!
注意清单文件 权限
<uses-permission android:name="android.permission.INTERNET"/><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"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
1、分享二进制图片:
将Bitmap转换成byte格式的数组 类
参数1: 穿入bitmap对象,参数2: 是否释放资源private byte[] bitmapToByteArray(Bitmap bitmap, boolean recycle) { ByteArrayOutputStream output = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, output); if (recycle) { bitmap.recycle(); } byte[] result = output.toByteArray(); try { output.close(); } catch (Exception e) { e.printStackTrace(); } return result; }
二进制图片分享代码:
//第一步:获取二进制图像的Bitmap对象 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);// 第二步:创建WXImageObject,并包装bitmap WXImageObject imgObj = new WXImageObject(bitmap);// 第三步:创建WXMediaMessage对象,并包装WXimageObjext对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj;// 第四步:压缩图片 Bitmap thumBitmap = bitmap.createScaledBitmap(bitmap, 120, 150, true);// 释放图片占用的内存资源 bitmap.recycle(); msg.thumbData = bitmapToByteArray(thumBitmap, true);//压缩图// 第五步:创建SendMessageTo.Req对象,发送数据 SendMessageToWX.Req req = new SendMessageToWX.Req();// 唯一标识 req.transaction = buildTransction("img");// 发送的内容或者对象 req.message = msg; req.scene = send_friend.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req);
2、分享本地图片:
第一步:判读图像文件是否存在 String path ="/storage/emulated/0/image/123.jpg"; File file = new File(path); if(!file.exists()) { Toast.makeText(MainActivity.this, "文件不存在", Toast.LENGTH_SHORT).show(); }// 第二步:创建WXImageObject, WXImageObject imgObj = new WXImageObject();// 设置文件的路径 imgObj.setImagePath(path);// 第三步:创建WXMediaMessage对象,并包装WXimageObjext对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj;// 第四步:压缩图片 Bitmap bitmap = BitmapFactory.decodeFile(path); Bitmap thumBitmap = bitmap.createScaledBitmap(bitmap, 120, 150, true);// 释放图片占用的内存资源 bitmap.recycle(); msg.thumbData = bitmapToByteArray(thumBitmap, true);//压缩图// 第五步:创建SendMessageTo.Req对象,发送数据 SendMessageToWX.Req req = new SendMessageToWX.Req();// 唯一标识 req.transaction = buildTransction("img");// 发送的内容或者对象 req.message = msg; req.scene = send_friend.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req);
3、分享URL图片:
由于主线程中不能请求网络,需要开启线程:
Thread thread = new Thread(new Runnable() { @Override public void run() { try {// 第一步:创建WXImageObject对象,并设置URL地址 String url = "http://avatar.csdn.net/2/C/8/1_small_and_smallworld.jpg"; WXImageObject imgObj = new WXImageObject();// 设置图片的url imgObj.imageUrl = url;// 第二步:创建WXMediaMeaasge对象,包装WXImageObject对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj;// 第三步:压缩图片 Bitmap bitmap = BitmapFactory.decodeStream(new URL(url).openStream()); Bitmap thumBitmap = bitmap.createScaledBitmap(bitmap, 120, 150, true);// 释放资源 bitmap.recycle(); msg.thumbData = bitmapToByteArray(thumBitmap, true);// 第四部:创建SendMessageTo.Req对象,发送数据 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransction("img"); req.message = msg; req.scene = send_friend.isChecked()? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); } catch (Exception e) { e.printStackTrace(); } } }); thread.start();
}
更多相关文章
- Android中文件与文件夹的创建(file)
- Android(安卓)Studio 3.6 Windos、mac最新版安装教程图片
- NinePatch图片制作从入门到精通
- Android中如何修改SeekBar的默认样式
- 【Android每日一讲】2012.10.23 不同Activity之间的数据传递 --
- Android(安卓)调用 startActivityForResult(intent,requestCode)
- Android(安卓)学习系列 - Application
- android资源访问机制
- android模拟器创建报错: PANIC: Could not open:.... 错误的解决