Android 使用Expo在react native上共享图像和文件
我已使用Android 使用Expo在react native上共享图像和文件,android,react-native,expo,Android,React Native,Expo,我已使用FileSystem.downloadsync Share.Share在iOS上运行良好。如何共享我在Android上本地保存的图像 我试过了 这两种解决方案似乎都不适用于世博会 我正在使用react本机版本: 有什么我遗漏的吗?自从SDK33以来,你可以使用Expo共享将任何类型的文件共享给其他应用程序,即使你在Android上也可以处理其文件类型 见: 用法非常简单: import * as Sharing from 'expo-sharing'; // Import the
FileSystem.downloadsync
Share.Share在iOS上运行良好。如何共享我在Android上本地保存的图像
我试过了
有什么我遗漏的吗?自从SDK33以来,你可以使用Expo共享将任何类型的文件共享给其他应用程序,即使你在Android上也可以处理其文件类型 见: 用法非常简单:
import * as Sharing from 'expo-sharing'; // Import the library
Sharing.shareAsync(url) // And share your file !
为了让用户共享保存在我们(Expo)应用程序中的内容,我们将其结构化如下。(这在iOS和安卓系统中运行)
希望这有帮助:将不起作用,除非您退出。这使您能够共享本地文件。如何共享从外部源(如S3)加载到
中的文件?@MikeK您可以使用Expo的文件系统库从S3下载文件,然后共享本地下载文件的uri。这就是我最终要做的,但对我来说似乎是额外的一步,不是吗?我觉得我也应该能够访问缓存/加载的图像,而不必显式地将它们下载到临时位置,然后在共享后将其删除。
import * as Sharing from 'expo-sharing'; // Import the library
Sharing.shareAsync(url) // And share your file !
import * as FileSystem from 'expo-file-system';
import * as Sharing from 'expo-sharing';
<Button
name="share"
onPress={() =>
openShareDialogAsync(media, {
video: media.meta.fileType === 'video',
})
}
/>
const openShareDialogAsync = async (mediaProp, options) => {
const fileDetails = {
extension: options.video ? '.mp4' : '.jpg',
shareOptions: {
mimeType: options.video ? 'video/mp4' : 'image/jpeg',
dialosTitle: options.video
? 'Check out this video!'
: 'Check out this image!',
UTI: options.video ? 'video/mp4' : 'image/jpeg',
},
};
const downloadPath = `${FileSystem.cacheDirectory}${mediaProp.media_id}${fileDetails.extension}`;
const { uri: localUrl } = await FileSystem.downloadAsync(
mediaProp.url,
downloadPath
);
if (!(await Sharing.isAvailableAsync())) {
showMessage({
message: 'Sharing is not available',
description: 'Your device does not allow sharing',
type: 'danger',
});
return;
}
await Sharing.shareAsync(localUrl, fileDetails.shareOptions);
};