安卓 WebView 加载 WebGL 的内容

3

我已经花费了几个小时的时间寻找解决方法,但是一直无法完成。

问题:我有一个html页面和一个webGL文件(three.js文件),我需要在Android Webview中打开这个html文件。WebView无法加载html页面。

以下是我尝试过的代码:

        WebSettings settings = webView.getSettings();
    webView.addJavascriptInterface(this, "Android");
    settings.setJavaScriptEnabled(true);
    settings.setDomStorageEnabled(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    settings.setUseWideViewPort(true);
    webView.setWebChromeClient(new WebChromeClient(){
    });
 webView.loadUrl("file://" + Environment.getExternalStorageDirectory() + "/Android/index.html");

我把所有的资源都放在了sd卡里。 错误日志:
 "Uncaught ReferenceError: $ is not defined", source:     file:///storage/emulated/0/Android/all.min.js (17)
 "THREE.WebGLRenderer", source: file:///storage/emulated/0/Android/all.min.js (11)
 "THREE.WebGLRenderer: OES_texture_float extension not supported.", source: file:///storage/emulated/0/Android/all.min.js (12)
 "THREE.WebGLRenderer: OES_texture_float_linear extension not supported.", source: file:///storage/emulated/0/Android/all.min.js (12)
 "THREE.WebGLRenderer: OES_texture_half_float extension not supported.", source: file:///storage/emulated/0/Android/all.min.js (12)
 "THREE.WebGLRenderer: OES_texture_half_float_linear extension not supported.", source: file:///storage/emulated/0/Android/all.min.js (12)
 "THREE.WebGLRenderer: ANGLE_instanced_arrays extension not supported.", source: file:///storage/emulated/0/Android/all.min.js (12)
 "THREE.WebGLRenderer: OES_element_index_uint extension not supported.", source: file:///storage/emulated/0/Android/all.min.js (12)
 "THREE.WebGLRenderer:", source: file:///storage/emulated/0/Android/all.min.js (12)
"XMLHttpRequest cannot load file:///storage/emulated/0/Android/res/sky.ctm.   Cross origin requests are only supported for protocol schemes:
  http, data, chrome, https.", source:   file:///storage/emulated/0/Android/index.html (0)
 "Uncaught TypeError: Cannot read property 'Symbol(Symbol.iterator)' of    null", source: file:///storage/emulated/0/Android/all.min.js (16)

请问有人可以建议我该怎么做吗?


你可以尝试使用webView.getSettings().setPluginState(PluginState.ON);。 - Sathish Kumar J
谢谢,但没有运气。 - GvSharma
如何解决 Uncaught ReferenceError: $ is not defined 错误? - LJᛃ
这是我在询问什么?我认为为了删除它,我需要在我的HTML页面中放置一个jQuery插件..? - GvSharma
1个回答

3

尝试打开以下设置:

settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);

我在WebView中加载纹理时遇到了麻烦。启用此设置对我很有效。 - Petterson
当我从互联网上而不是本地加载URL时,这并没有帮助我。我无法在Android WebView中加载和查看我的three.js Web应用程序。Android10。 - HAMED
@HAMED,你解决了你的问题吗? - Sana Mumtaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接