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();

}


  


更多相关文章

  1. Android中文件与文件夹的创建(file)
  2. Android(安卓)Studio 3.6 Windos、mac最新版安装教程图片
  3. NinePatch图片制作从入门到精通
  4. Android中如何修改SeekBar的默认样式
  5. 【Android每日一讲】2012.10.23 不同Activity之间的数据传递 --
  6. Android(安卓)调用 startActivityForResult(intent,requestCode)
  7. Android(安卓)学习系列 - Application
  8. android资源访问机制
  9. android模拟器创建报错: PANIC: Could not open:.... 错误的解决

随机推荐

  1. Android新手入门2016(17)--新手总结
  2. 【读书笔记《Android游戏编程之从零开始
  3. Android(安卓)GUI Padding和斜体字的问题
  4. android 开发 经典网站
  5. android中view的一些属性
  6. android 兼容所有刘海屏的方案大全
  7. android手动拖动滚动条快速滑动
  8. android 兼容所有刘海屏的方案大全
  9. Android】Android(安卓)apk默认安装位置
  10. 【Android布局】在程序中设置android:gra