]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Make loading data into WebView more correct.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 5 Dec 2015 16:09:38 +0000 (17:09 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 5 Dec 2015 16:09:38 +0000 (17:09 +0100)
src/com/hughes/android/dictionary/HtmlDisplayActivity.java

index 3107da5cb36704b42529bba86662dddc492a6586..b99f55bc6f7beb21d9696a793d8c251af2b69325 100644 (file)
@@ -19,6 +19,7 @@ import android.content.Intent;
 import android.os.Bundle;\r
 import android.support.v7.app.ActionBar;\r
 import android.support.v7.app.ActionBarActivity;\r
+import android.util.Base64;\r
 import android.util.Log;\r
 import android.view.View;\r
 import android.view.View.OnClickListener;\r
@@ -26,6 +27,8 @@ import android.widget.Button;
 \r
 import com.hughes.util.StringUtil;\r
 \r
+import java.io.UnsupportedEncodingException;\r
+\r
 public final class HtmlDisplayActivity extends ActionBarActivity {\r
 \r
     static final String LOG = "QuickDic";\r
@@ -68,14 +71,21 @@ public final class HtmlDisplayActivity extends ActionBarActivity {
         actionBar.setDisplayHomeAsUpEnabled(true);\r
 \r
         final int htmlRes = getIntent().getIntExtra(HTML_RES, -1);\r
-        final String html;\r
+        String html;\r
         if (htmlRes != -1) {\r
             html = StringUtil.readToString(getResources().openRawResource(htmlRes));\r
         } else {\r
             html = getIntent().getStringExtra(HTML);\r
         }\r
         final MyWebView webView = (MyWebView) findViewById(R.id.webView);\r
-        webView.loadData(html, "text/html", "utf-8");\r
+        try {\r
+            // No way to get pure UTF-8 data into WebView\r
+            html = Base64.encodeToString(html.getBytes("UTF-8"), Base64.DEFAULT);\r
+        } catch (UnsupportedEncodingException e) {\r
+            throw new RuntimeException(e);\r
+        }\r
+        // Use loadURL to allow specifying a charset\r
+        webView.loadUrl("data:text/html;charset=utf-8;base64," + html);\r
         webView.activity = this;\r
 \r
         final String textToHighlight = getIntent().getStringExtra(TEXT_TO_HIGHLIGHT);\r