首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React Native -打开设备默认库应用程序

React Native -打开设备默认库应用程序
EN

Stack Overflow用户
提问于 2021-03-31 01:47:12
回答 1查看 289关注 0票数 0

我正在开发一个反应原生应用程序的相机,它需要包括一个按钮来打开设备画廊应用程序(画廊为安卓,相机卷为iOS)。所有的照片都存储在一个特定的相册中,所以如果可能的话,最好打开那个相册中的应用程序,但这不是强制性的。值得注意的是,我不想创建一个自定义的应用内图库。这实际上会更容易,但这并不是客户所要求的。

这似乎是一项非常简单的任务,但我还没有找到一种方法来做到这一点。有些人建议使用链接,如下所示:

代码语言:javascript
运行
复制
Linking.openURL('content://media/internal/images/media');

这使得操作系统询问用户应该使用什么应用程序来打开该链接。如果我选择Google Photos,它工作得很好。但是,如果我使用默认的android图库,它会打开一个不存在的照片,显示一个占位符图像。所以这种方法不能可靠地工作。

根据android文档,应该可以使用intent打开图库应用程序。但我同时尝试了这两种方法:

代码语言:javascript
运行
复制
Linking.sendIntent('CATEGORY_APP_GALLERY');
Linking.sendIntent('android.intent.category.APP_GALLERY');

但它并没有起作用。要么是我做错了什么,要么是sendIntent根本不能工作。

还有一个名为"react-native-send-intent“的插件,但它不包含打开图库的函数。我的想法已经用完了,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 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的工作代码片段示例

代码语言:javascript
运行
复制
import * as IntentLauncher from 'expo-intent-launcher';

IntentLauncher.startActivityAsync('android.intent.action.MAIN', {
          category: 'android.intent.category.APP_GALLERY',
        })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66875983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档