RxReader / weibo_kit

Flutter版新浪微博登录/分享
Apache License 2.0
105 stars 33 forks source link

安卓分享图片的共享路径问题 #50

Open baishitong opened 2 years ago

baishitong commented 2 years ago

微博分享图片目前是不能传本地图片地址的,除非你在主工程配置ProviderPath,即使如此也可能是找不到的。 目前imageUri:需要的是网络图片下载到本地的地址,而不是网络图片url,因此建议不使用imageUri,只使用imageData。 await wbkit.Weibo.instance.shareImage( text: '${info.title}。${info.brief}', imageData: await getNetworkImageData(info.url), imageUri: Uri.parse(info.href), );

droplet-js commented 2 years ago

微博SDK和文档写的和狗屎没差别,我今天更新了一下,多图分享直接跪

droplet-js commented 2 years ago

路径方式分享功能似乎已经跪的妥妥的 ...

droplet-js commented 2 years ago

搞定了,傻吊微博SDK辣么大的更新居然没个文档,你先用 git 方式引入,没问题后我再发布正式版本

              File file = await DefaultCacheManager().getSingleFile(
                  'https://www.baidu.com/img/bd_logo1.png?where=super');
              if (Platform.isAndroid) {
                // 仅支持 Context.getExternalFilesDir(null)/Context.getExternalCacheDirs(null) 路径分享
                // path_provider.getExternalCacheDirectories();
                // path_provider.getExternalStorageDirectory();
                final Directory temporaryDir =
                    await path_provider.getTemporaryDirectory();
                if (path.isWithin(temporaryDir.parent.path, file.path)) {
                  // 复制
                  final File copyFile = File(path.join(
                      (await path_provider.getExternalStorageDirectory())!.path,
                      path.basename(file.path)));
                  if (copyFile.existsSync()) {
                    await copyFile.delete();
                  }
                  await copyFile.writeAsBytes(await file.readAsBytes());
                  file = copyFile;
                }
              }
              await Weibo.instance.shareMultiImage(
                text: 'Share Text',
                imageUris: <Uri>[Uri.file(file.path)],
              );
droplet-js commented 2 years ago

我再试试覆盖傻逼微博SDK的FileProvider,突破一下路径限制

Ucoon commented 2 years ago

复制了上面的代码,还是不可用,请问还有解决方式吗 @droplet-js

akindone commented 1 year ago

搞定了,傻吊微博SDK辣么大的更新居然没个文档,你先用 git 方式引入,没问题后我再发布正式版本

              File file = await DefaultCacheManager().getSingleFile(
                  'https://www.baidu.com/img/bd_logo1.png?where=super');
              if (Platform.isAndroid) {
                // 仅支持 Context.getExternalFilesDir(null)/Context.getExternalCacheDirs(null) 路径分享
                // path_provider.getExternalCacheDirectories();
                // path_provider.getExternalStorageDirectory();
                final Directory temporaryDir =
                    await path_provider.getTemporaryDirectory();
                if (path.isWithin(temporaryDir.parent.path, file.path)) {
                  // 复制
                  final File copyFile = File(path.join(
                      (await path_provider.getExternalStorageDirectory())!.path,
                      path.basename(file.path)));
                  if (copyFile.existsSync()) {
                    await copyFile.delete();
                  }
                  await copyFile.writeAsBytes(await file.readAsBytes());
                  file = copyFile;
                }
              }
              await Weibo.instance.shareMultiImage(
                text: 'Share Text',
                imageUris: <Uri>[Uri.file(file.path)],
              );

这个可以,我测试了华为 mate20(android9);小米10S(android12);但是如果是分享单图的接口shareImage在小米10S(android12)是不行的。