Пустой экран при загрузке документа из uri в веб-просмотре Expo

Я использую Экспо. import { WebView } from "react-native-webview"; и импортированный веб-просмотр, как указано выше, я пытаюсь загрузить файл документа с некоторого URL-адреса https, он отлично работает и загружает файл xls в IOS, но в Android он дает пустой экран.

 <WebView
  originWhitelist={["*"]}
  source={{ uri: 'https://download.microsoft.com/download/1/4/E/14EDED28-6C58-4055-A65C-23B4DA81C4DE/Financial%20Sample.xlsx' }}
  onLoadEnd={() =>  console.log('end' +Platform.OS)}
  javaScriptEnabled={true}
  domStorageEnabled={true}
  useWebKit={true}
  style={styles.WebViewStyle}
  startInLoadingState={true}
/>

const styles = {  
  WebViewStyle: {
    flex: 1,
    marginLeft: 6,
    height: "50%",
    width: "97%"
  }
}

console.log onLoadEnd не подходит для Android, но отлично работает для IOS.


person Gaurav Dixit    schedule 12.07.2020    source источник


Ответы (1)


Вы можете попробовать Linking, так как WebView — это представление, отображающее веб-страницы внутри вашего приложения.

import * as Linking from 'expo-linking';

Linking.openURL('https://download.microsoft.com/download/1/4/E/14EDED28-6C58-4055-A65C-23B4DA81C4DE/Financial%20Sample.xlsx');
person mainak    schedule 12.07.2020
comment
Да, я могу это сделать, но это не решает мою задачу. Я хочу открыть документ в своем приложении на новом экране. Мой подход отлично работает с IOS, но я не могу понять, почему не на Android. - person Gaurav Dixit; 13.07.2020
comment
Вы упомянули эти реквизиты? ‹WebView source={{ uri: myinitialurl.com.br/arquivos }} style={{ }} startInLoadingState={true} allowUniversalAccessFromFileURLs={true} javaScriptEnabled={true} MixedContentMode={'always'} onNavigationStateChange={(result) =› this.handleUrlWithZip(result)} /› - person mainak; 13.07.2020
comment
‹WebView originWhitelist={[*]} source={{ uri: loadUri, headers: { Content-Type: application/pdf, } }} style={styles.WebViewStyle} startInLoadingState={true} allowUniversalAccessFromFileURLs={true} javaScriptEnabled= {true} MixedContentMode={'always'} onLoadStart={() => activityIndicatorLoadingView} startInLoadingState={true} /> да, но я не использую onNavigationStateChange, не использовал это - person Gaurav Dixit; 13.07.2020
comment
Спасибо, что нашли время помочь мне. Я создал для вас ссылку, чтобы вы могли понять, что происходит на самом деле. Когда вы запустите это, вы обнаружите, что он отлично работает в IOS, но не в Android: snack.expo .io/@gd_11/874548 Посмотрите и помогите. - person Gaurav Dixit; 14.07.2020