Ури не работает для Android - PullRequest
0 голосов
/ 25 марта 2019

согласно документации:

В iOS не думайте, что возвращаемое абсолютное значение URI будет сохраняться. Смотри # 107

Я тестирую его на своем устройстве Android (Xiaomi), и оно прекрасно работает, когда я выбираю изображение, но после закрытия приложения и повторного его открытия или повторного запуска с использованием react-native run-android, uri не работает Я больше не работаю, и вместо изображения я получаю голубоватый цвет. это мой код:

ImagePicker.showImagePicker({
   storageOptions: {
      skipBackup: true
   }
}, res => {
   // handling error, etc.
   this.setState({image: res.uri});
   // persisting with AsyncStorage
   }
);

//then showing it
<Image style={{height: 100, width: 100}} source={{ uri: this.state.image }}/>

after re-opening the app это мой URI после перезапуска приложения: content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FDCIM%2FCamera%2FIMG_20190310_123752.jpg

Это странно, потому что, когда я получаю голубоватый цвет и снова выбираю ту же картинку из моей галереи, я получаю тот же URI, что и выше, и это работает !!! хотя это так же, как до перезапуска. А что я могу сделать? спасибо

1 Ответ

0 голосов
/ 25 марта 2019

Стандартный способ решения этой проблемы - отключить кэш для ваших изображений, однако я всегда преодолеваю это, добавляя дополнительный параметр в конце URL, чтобы он отличался от предыдущего, поэтому с этимкак вы обманете ОС (Android в вашем случае).Код изменен на что-то вроде этого:

<Image style={{height: 100, width: 100}} source={{uri:'your_image_link.com/image.jpg?ts=Math.random()' }}/>

это добавит уникальный хвост к вашему URI, который предотвращает кеширование.Не забывайте, что вам нужно поместить 'your_image_link.com/image.jpg?ts=Math.random()' в ваш setState () .Удачи!

...