diff --git a/README.md b/README.md index 02cb2d3..77da3f0 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ WeChat.shareImage({ ``` -#### ShareLocalImage(ShareImageMetadata) 分享图片 +#### ShareLocalImage(ShareImageMetadata) 分享本地图片 ShareImageMetadata @@ -178,6 +178,7 @@ WeChat.ShareLocalImage({ }) ``` +注意:图片路径必须在一个 Public 目录里,例如 Download 目录,否则微信没权限读取这张图片,导致图片发不出去。 #### ShareMusic(ShareMusicMetadata) 分享音乐 diff --git a/android/src/main/java/com/theweflex/react/WeChatModule.java b/android/src/main/java/com/theweflex/react/WeChatModule.java index 5744c2d..9064f69 100644 --- a/android/src/main/java/com/theweflex/react/WeChatModule.java +++ b/android/src/main/java/com/theweflex/react/WeChatModule.java @@ -231,7 +231,6 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv public void invoke(@Nullable Bitmap bitmap) { Bitmap bmp = bitmap; int maxWidth = data.hasKey("maxWidth") ? data.getInt("maxWidth") : -1; - // 如果图片大于10MB而且没设置压缩,自动开启压缩 if (maxWidth > 0) { bmp = Bitmap.createScaledBitmap(bmp, maxWidth, bmp.getHeight() / bmp.getWidth() * maxWidth, true); } @@ -254,7 +253,7 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv }); } - + // private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath(); /** * 分享本地图片 * @param data @@ -268,20 +267,21 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv if (path.indexOf("file://") > -1) { path = path.substring(7); } - int maxWidth = data.hasKey("maxWidth") ? data.getInt("maxWidth") : -1; +// int maxWidth = data.hasKey("maxWidth") ? data.getInt("maxWidth") : -1; fs = new FileInputStream(path); Bitmap bmp = BitmapFactory.decodeStream(fs); - if (maxWidth > 0) { - bmp = Bitmap.createScaledBitmap(bmp, maxWidth, bmp.getHeight() / bmp.getWidth() * maxWidth, true); - } +// if (maxWidth > 0) { +// bmp = Bitmap.createScaledBitmap(bmp, maxWidth, bmp.getHeight() / bmp.getWidth() * maxWidth, true); +// } -// String fileName = System.currentTimeMillis() + ".jpg"; -// String tempPath = path.substring(0, path.length() - 4) + "_upload.jpg"; -// File file = new File(tempPath, fileName); +// File f = Environment.getExternalStoragePublicDirectory(SDCARD_ROOT + "/react-native-wechat-lib"); +// String fileName = "wechat-share.jpg"; +// String tempPath = SDCARD_ROOT + "/react-native-wechat-lib"; +// File file = new File(f, fileName); // try { // FileOutputStream fos = new FileOutputStream(file); -// bmp.compress(Bitmap.CompressFormat.JPEG, 90, fos); +// bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); // fos.flush(); // fos.close(); // } catch (FileNotFoundException e) { @@ -295,7 +295,9 @@ public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEv // bmp.compress(Bitmap.CompressFormat.JPEG, 85, var2); // int size2 = var2.toByteArray().length; // 初始化 WXImageObject 和 WXMediaMessage 对象 - WXImageObject imgObj = new WXImageObject(bmp); + + WXImageObject imgObj = new WXImageObject(); + imgObj.setImagePath(path); WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj; // 设置缩略图 diff --git a/index.d.ts b/index.d.ts index 4c7e679..d85c8ac 100644 --- a/index.d.ts +++ b/index.d.ts @@ -68,8 +68,7 @@ declare module "react-native-wechat-lib" { } export interface ShareImageMetadata { imageUrl: string, - scene?: WXScene, - maxWidth?: number + scene?: WXScene } export interface ShareMusicMetadata { musicUrl: string,