java - 微信android sdk 能否一次发送多张图片?
ringa_lee
ringa_lee 2017-04-17 11:14:34
0
1
705
WXImageObject imgObj = new WXImageObject();
imgObj.setImagePath(path);

WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgObj;

Bitmap bmp = BitmapFactory.decodeFile(path);
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
bmp.recycle();
msg.thumbData = Util.bmpToByteArray(thumbBmp, true);

SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("img");
req.message = msg;
req.scene =  SendMessageToWX.Req.WXSceneTimeline ;
api.sendReq(req);

以上代码可以分享一张图片到微信朋友圈,但是如果 想要一次分享多张图片怎么办啊

ringa_lee
ringa_lee

ringa_lee

reply all(1)
巴扎黑

No, at least the current SDK version cannot handle multiple images. The SDK is not obfuscated and by looking at it, it supports

public static final int TYPE_UNKNOWN = 0;
public static final int TYPE_TEXT = 1;
public static final int TYPE_IMAGE = 2;
public static final int TYPE_MUSIC = 3;
public static final int TYPE_VIDEO = 4;
public static final int TYPE_URL = 5;
public static final int TYPE_FILE = 6;
public static final int TYPE_APPDATA = 7;
public static final int TYPE_EMOJI = 8;

SDK passes data through Bundle, using <key,value> to record each data type, and they are all single records, such as image data WXImageObject:

paramBundle.putByteArray("_wximageobject_imageData", this.imageData);
paramBundle.putString("_wximageobject_imagePath", this.imagePath);
paramBundle.putString("_wximageobject_imageUrl", this.imageUrl);

There is only a single imageData, give up.

However, there is a method on the Internet to call WeChat through the "sharing" of the system. The following is the code I wrote to test that it works. However, this method has to be manually operated in WeChat, and the scope of application is too small:

private void shareMultiplePictureToTimeLine(File... files) {
    Intent intent = new Intent();
    ComponentName comp = new ComponentName("com.tencent.mm",
            "com.tencent.mm.ui.tools.ShareToTimeLineUI");
    intent.setComponent(comp);
    intent.setAction(Intent.ACTION_SEND_MULTIPLE);
    intent.setType("image/*");

    ArrayList<Uri> imageUris = new ArrayList<Uri>();
    for (File f : files) {
        imageUris.add(Uri.fromFile(f));
    }
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);

    startActivity(intent);
}

            // Traverse the .png files in the SD card and share them through WeChat
            File root = Environment.getExternalStorageDirectory();
            File[] files = root.listFiles(new FileFilter() {

                @Override
                public boolean accept(File pathname) {
                    if (pathname.getName().endsWith(".png"))
                        return true;
                    return false;
                }
            });
            shareMultiplePictureToTimeLine(files);
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template