React Native 的 webview 在安卓下加载本地文件失败的问题,求大神帮忙 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
chfight
V2EX    程序员

React Native 的 webview 在安卓下加载本地文件失败的问题,求大神帮忙

  •  
  •   chfight 2017 年 12 月 2 日 4408 次点击
    这是一个创建于 2979 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.需要在项目中加载一个 web 页面,所以就用的 react native 官方提供的 webview 组件(相关的代码和资源文件全部在本地放着)。

    2.webview 在安卓下的路径为:source={{uri:"file:///android_asset/web/index.html"}}。

    3.在 web 代码中用到了第三方库,需要本地的资源文件。我查看了下源码用的是 XMLHttpRequest 加载的。

    4.以下设置都已经尝试过,但是没什么用

    setJavascriptEnabled(true); setAllowFileAccessFromFileURLs(true); setAllowUniversalAccessFromFileURLs(true);

    5.web 页面可以在 android 下正常加载。

    现在的问题是:在 android 下,每当加载到后缀名为.gz 的文件时,都会加载失败,但是在 ios 下表现正常(ios 下也是以 file://的 uri 加载的)。

    由于本人主要是搞 js 的,对 android 没什么了解,所以求各位大神帮忙看看需要怎么做,本人表示感激不尽!

    第 1 条附言    2017 年 12 月 2 日
    再补充一下:
    在请求***.json.gz 文件的时候执行了 XMLHttpRequest 的 onerror 函数,并且 status 为 0,其他文件正可以正常请求(例如***.bin),应该不是跨域问题。

    XMLHttpRequest 是在 js 的 worker 中执行的,不知道会不会产生什么影响。
    8 条回复    2017-12-02 22:13:36 +08:00
    thomasyim
        1
    thomasyim  
       2017 年 12 月 2 日
    不太懂……不过为什么不去 Stack Overflow 问呢
    dartabe
        2
    dartabe  
       2017 年 12 月 2 日
    是权限设置问题吗? 我也是小白
    rongyiran
        3
    rongyiran  
       2017 年 12 月 2 日
    你加载的时候报了什么错误,你要说出来啊?
    rongyiran
        4
    rongyiran  
       2017 年 12 月 2 日
    我大胆猜测一下,可能还是因为你的路径加载错误了, fetch 封装了 XMLHttpRequest,可能跟你的网络请求关系不大.
    我前段时间碰到了一个这样的错误,我用 formdata 上传文件,Android 和 iOS 上传图片没有问题,ios 上传视频也没问题,但是唯独 Android 有问题,当时就抛出了 XMLHttpRequest 的异常.当时我也以为是网络的问题,但是随着不断的尝试才发现,跟网络半毛钱关系都没有,我拍完视频后,返回了 uri 和 path,我上传的是 uri,因为 ios 穿的就是这参数,但是 Android 需要的却是 path.说这么多,也不知道你能不能看懂.
    chfight
        5
    chfight  
    OP
       2017 年 12 月 2 日
    @thomasyim 英文水平有限,,,
    chfight
        6
    chfight  
    OP
       2017 年 12 月 2 日
    @rongyiran 谢谢回答! 应该不是路径问题,因为在 debug 版本中,可以用 require("web/index.html"),并且文件都能正常请求。
    我现在的测试结果是:请求***.json.gz 文件的时候执行了 XMLHttpRequest 的 onerror 函数,并且 status 为 0(其他文件正常)。
    还有一点就是 XMLHttpRequest 是在 worker 中执行的。
    faywong8888
        7
    faywong8888  
       2017 年 12 月 2 日 via iPhone
    改个文件后缀名试试
    rongyiran
        8
    rongyiran  
       2017 年 12 月 2 日
    @chfight 如果还是解决不了
    你可以留一个 demo 我帮你试试
    webview 我没试过
    我们一起研究试试...
    我之前是做 Android 原生
    写了两个 rn 项目
    有点经验
    帮你试试
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5301 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 08:52 PVG 16:52 LAX 00:52 JFK 03:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86