Проблема в создании ресурса локального статического изображения с использованием response-native-photos-framework - PullRequest
0 голосов
/ 23 апреля 2019

Я использую response-native-photos-framework для создания пользовательского альбома и создания ресурсов в собственной галерее устройства.

В моем приложении я предоставляю пользователю определенные функции создания альбома. Для этого я показываю простой модал с полем ввода, где пользователь может ввести название альбома и кнопки «ОК» и «ОТМЕНА».

Что я хочу?
Я хочу, чтобы, когда пользователь нажимал кнопку «ОК» после ввода имени альбома в поле ввода, в галерее был создан напечатанный альбом, а в этот альбом было добавлено одно изображение по умолчанию (которое находится в моем локальном каталоге).

Вот код, который я использовал:

createAlbum() {
    RNPhotosFramework.createAlbum(this.state.createAlbumName).then((album) => {
      RCTCameraRollRNPhotosFrameworkManager.createAssets({
        images : [{ uri : '../assets/logo.png' }],
        album : album,
        includeMetadata : true 
      });
    }).catch((error)=>{
      alert("Error in creating album : \n"+JSON.stringify(error));
    });
}

Как видите, я впервые создаю альбом, который успешно создается в галерее, но ресурсы не копируются в этот альбом. Это дает мне эту ошибку:

Не удалось найти файл изображения: /// Пользователи / зрение / Библиотека / Разработчик / CoreSimulator / Устройства / E5AA1780-A55C-4C67-95A5-222E4AS3PA23 / data / Containers / Bundle / Приложение / 5E37FAF5-15DD-483B-3BD6- C311C587SD8 / CameraApp.app /../ активы / ГИМ / logo.png

Я также использовал require(), чтобы получить изображение URI следующим образом:

images : [{ uri : require('../assets/logo.png' )}],

но тогда приложение вылетит.

Вот моя структура проекта:

my project directory structure.

Пожалуйста, помогите мне, как я могу создать актив локального статического изображения с помощью response-native-photos-framework. Я новичок, чтобы реагировать на родной !!!

1 Ответ

0 голосов
/ 01 мая 2019

Если кто-то также сталкивается с этой проблемой, я решил проблему, используя этот ответ.

Чтобы решить проблему, сначала установите реагировать-родной-fs .

Затем импортируйте его в свой проект.

const RNFS = require('react-native-fs');

Затем я использовал RNFS.MainBundlePath, чтобы получить корневой путь моего приложения и добавить assets перед моим фактическим путем.

Воткод:

createAlbum() {
    RNPhotosFramework.createAlbum(this.state.createAlbumName).then((album) => {
      RCTCameraRollRNPhotosFrameworkManager.createAssets({
        images : [{uri:RNFS.MainBundlePath+'assets/src/assets/imgs/logo.png'}],
        album : album,
        includeMetadata : true
      }).then((result)=>{
        alert(JSON.stringify(result));
      }).catch((error)=>{
        alert("Error in creating assets.\n"+JSON.stringify(error));
      });
    });
}

Надеюсь, это кому-нибудь поможет.

...