You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native应用中打开Android系统相册并解决黑屏问题

问题根因

你当前使用Linking.openURL("content://media/internal/images/media")唤起安卓相册的逻辑存在缺陷:该URI仅指向安卓媒体存储的内容提供者路径,没有配套选图结果的接收回调逻辑,选中照片后系统无法将数据回传给你的应用,进而触发黑屏。iOS端的photos-redirect://是系统专门适配的相册跳转scheme,自带返回原应用的逻辑,因此可以正常运行。

问题现象截图:
安卓选图后黑屏截图

修复方案

不推荐直接用Linking实现安卓选图需求,优先使用社区成熟的封装库,无需自行处理原生适配逻辑:

  • 普通RN项目可以接入react-native-image-picker,双端能力统一,自带选图结果回调
  • Expo项目可以接入expo-image-picker,无需额外原生配置

接入后调用示例:

import { launchImageLibrary } from 'react-native-image-picker';

openPhotos = () => {
  switch(Platform.OS){
    case "ios":
      Linking.openURL("photos-redirect://");
      break;
    case "android":
      // 调用选图能力,直接在回调中拿到选中的照片数据
      launchImageLibrary({ mediaType: 'photo' }, (res) => {
        if (res.assets?.length) {
          const selectedPhotoUri = res.assets[0].uri;
          // 自行处理选中的照片逻辑
        }
      })
      break;
    default:
      console.log("Could not open gallery app");
  }
}

如果必须自行原生实现,需要在安卓原生层新增接收选图结果的Activity,注册ACTION_PICK意图过滤器,封装原生模块供RN层调用,在onActivityResult生命周期中接收选中的照片URI回传给RN层即可,无需再通过Linking跳转。

内容的提问来源于stack exchange,提问作者Ashish Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 08:39:02