You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TradingView Widget在Android 6.0系统WebView中无法加载问题

Android 6.0 系统TradingView Widget无法显示的解决方案

核心原因

该兼容问题由Android 6.0(API 23)自带系统WebView内核(基于Chromium 44版本)的默认限制,以及TradingView JS库对旧内核的兼容性要求共同导致,业务逻辑本身没有问题。

具体缺失配置及修复方案

你需要补充以下WebView配置,同时替换资源加载方式:

  1. 替换loadData为loadDataWithBaseURL
    Android 6.0上使用loadData加载本地HTML字符串时,默认会拦截HTML内部引用的远程跨域资源,你引入的TradingView官方JS会被跨域规则拦截,修改加载方式指定基地址即可解决:
// 替换原有loadData行
webView.loadDataWithBaseURL("https://tradingview.com", data, "text/html", "utf-8", null);
  1. 补充WebView必要权限配置
    Android 6.0默认关闭了DOM存储、混合内容加载等TradingView渲染必备的权限,你需要在开启JS权限后补充以下配置:
webView.getSettings().setDomStorageEnabled(true); // 开启DOM存储,TradingView需要本地存储配置信息
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); // 允许JS触发窗口操作
// 允许混合内容加载,避免TradingView内部资源加载被拦截
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
  1. 极端兼容方案
    如果补充上述配置后仍然无法正常加载,说明TradingView最新的JS库已经放弃了对Chromium 44内核的语法兼容,你可以引入CrossWalk内核替代系统WebView,即可完美兼容Android 6.0及更低版本系统。

修改后完整代码示例

WebView webView = findViewById(R.id.webviewer);
String symbol = getIntent().getStringExtra("symbol");
String interval = getIntent().getStringExtra("interval");

String data = "<!-- TradingView Widget BEGIN -->\n" +
                "<div class=\"tradingview-widget-container\">\n" +
                "  <div id=\"tradingview_357eb\"></div>\n" +
                "  <div class=\"tradingview-widget-copyright\"><a href=\"https://tr.tradingview.com/symbols/"+symbol+"/?exchange=BINANCE\" rel=\"noopener\" target=\"_blank\"><span class=\"blue-text\">"+symbol+" Chart</span></a></div>\n" +
                "  <script type=\"text/javascript\" src=\"https://s3.tradingview.com/tv.js\"></script>\n" +
                "  <script type=\"text/javascript\">\n" +
                "  new TradingView.widget(\n" +
                "  {\n" +
                "  \"width\": 300,\n" +
                "  \"height\": 200,\n" +
                "  \"symbol\": \"BINANCE:"+symbol+"\",\n" +
                "  \"interval\": \""+interval+"\",\n" +
                "  \"timezone\": \"Europe/Istanbul\",\n" +
                "  \"theme\": \"light\",\n" +
                "  \"style\": \"1\",\n" +
                "  \"locale\": \"en\",\n" +
                "  \"toolbar_bg\": \"#f1f3f6\",\n" +
                "  \"enable_publishing\": false,\n" +
                "  \"hide_side_toolbar\": false,\n" +
                "  \"save_image\": false,\n" +
                "  \"studies\": [\n" +
                "    \"BB@tv-basicstudies\",\n" +
                "    \"RSI@tv-basicstudies\",\n" +
                "    \"StochasticRSI@tv-basicstudies\"\n" +
                "  ],\n" +
                "  \"container_id\": \"tradingview_357eb\"\n" +
                "}\n" +
                "  );\n" +
                "  </script>\n" +
                "</div>\n" +
                "<!-- TradingView Widget END -->";

// 补充配置
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
// 替换加载方式
webView.loadDataWithBaseURL("https://tradingview.com", data, "text/html", "utf-8", null);

内容的提问来源于stack exchange,提问作者Bahattin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 11:57:03