android之微信分享图片

来源:互联网 发布:curl json 编辑:程序博客网 时间:2024/05/21 11:18

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

}


  


原创粉丝点击