From efe268229f75b4e43b51c7f34753b9cd63ca70a7 Mon Sep 17 00:00:00 2001 From: chenying09 Date: Wed, 7 Aug 2024 21:26:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=88=86=E4=BA=AB=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/wechatlib/WeChatLibModule.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/wechatlib/WeChatLibModule.java b/android/src/main/java/com/wechatlib/WeChatLibModule.java index 6ba0b24..7adc9c3 100644 --- a/android/src/main/java/com/wechatlib/WeChatLibModule.java +++ b/android/src/main/java/com/wechatlib/WeChatLibModule.java @@ -255,6 +255,21 @@ public class WeChatLibModule extends ReactContextBaseJavaModule implements IWXAP return data; } + public String getFileUri(Context context, File file) { + if (file == null || !file.exists()) { + return null; + } + + Uri contentUri = FileProvider.getUriForFile(context, + "com.norcy.iread.fileprovider", // 要与`AndroidManifest.xml`里配置的`authorities`一致 + file); + + // 授权给微信访问路径 + context.grantUriPermission("com.tencent.mm", // 这里填微信包名 + contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); + + return contentUri.toString(); // contentUri.toString() 即是以"content://"开头的用于共享的路径 + } /** * 分享文本 @@ -265,7 +280,15 @@ public class WeChatLibModule extends ReactContextBaseJavaModule implements IWXAP @ReactMethod public void shareFile(ReadableMap data, Callback callback) throws Exception { WXFileObject fileObj = new WXFileObject(); - fileObj.fileData = loadRawDataFromURL(data.getString("url")); + + String url = data.getString("url"); + if (url.startsWith("http")) { + fileObj.fileData = loadRawDataFromURL(url); + } else { + File file = new File(url); + String fileUri = getFileUri(getReactApplicationContext(), file); + fileObj.filePath = fileUri; + } WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = fileObj;