android之微信分享图片

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值