Server 回傳 JSON:`{ "content": "
文字
WebView webView = findViewById(R.id.webview);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
// 允許 HTTP/HTTPS 混合內容 (API 21+)
if (Build.VERSION.SDK_INT >= 21) settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if (url.startsWith("https://") || url.startsWith("https://")) {
// 內部打開或外部瀏覽器
view.loadUrl(url); // 或 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public void onPageFinished(WebView view, String url) {
// 可選:注入 CSS 調整圖片自適應
view.loadUrl("javascript:(function() { " +
"var imgs = document.getElementsByTagName('img'); " +
"for (var i=0; i
`,需:
若 HTML 結構極簡(無複雜 CSS/JS),可用 `Html.fromHtml(html, imageGetter, null)` 配合 `ImageGetter` 非同步下載圖片插入 `TextView`。但**不支援超連結點擊攔截、CSS 佈局、JS 互動**,複雜頁面請直接用 WebView。
JSON 承載 HTML 富文本 → **WebView 是標準解法**。關鍵在於 `loadDataWithBaseURL` 載入、圖片 URL 絕對化/攔截、連結點擊攔截、CSS 注入自適應。參考:Sina Blog 範例。