我正在开发一个反应原生应用程序的相机,它需要包括一个按钮来打开设备画廊应用程序(画廊为安卓,相机卷为iOS)。所有的照片都存储在一个特定的相册中,所以如果可能的话,最好打开那个相册中的应用程序,但这不是强制性的。值得注意的是,我不想创建一个自定义的应用内图库。这实际上会更容易,但这并不是客户所要求的。
这似乎是一项非常简单的任务,但我还没有找到一种方法来做到这一点。有些人建议使用链接,如下所示:
Linking.openURL('content://media/internal/images/media');
这使得操作系统询问用户应该使用什么应用程序来打开该链接。如果我选择Google Photos,它工作得很好。但是,如果我使用默认的android图库,它会打开一个不存在的照片,显示一个占位符图像。所以这种方法不能可靠地工作。
根据android文档,应该可以使用intent打开图库应用程序。但我同时尝试了这两种方法:
Linking.sendIntent('CATEGORY_APP_GALLERY');
Linking.sendIntent('android.intent.category.APP_GALLERY');
但它并没有起作用。要么是我做错了什么,要么是sendIntent根本不能工作。
还有一个名为"react-native-send-intent“的插件,但它不包含打开图库的函数。我的想法已经用完了,任何帮助都将不胜感激。
发布于 2021-06-19 15:09:36
我在个人项目中也遇到了同样的问题。
根据the doc的说法,CATEGORY_APP_GALLERY
只是指定应用程序类别,必须与ACTION_MAIN
操作一起使用。
据我所知,不幸的是,我们不能通过React Native内置的Linking.sendIntent()
方法来传递一个类别。在这一点上,我们必须依赖于第三方库。
我选择了expo-intent-launcher
(如果你没有使用expo,你仍然可以按照the doc中描述的简单工作流程使用它)。下面是一个使用expo-intent-launcher
的工作代码片段示例
import * as IntentLauncher from 'expo-intent-launcher';
IntentLauncher.startActivityAsync('android.intent.action.MAIN', {
category: 'android.intent.category.APP_GALLERY',
})
https://stackoverflow.com/questions/66875983
复制相似问题