【发布时间】:2015-08-26 12:02:07
【问题描述】:
我正在尝试在 webview 中加载一个 html 字符串,即不是从 URL 或 sdcard 中的某个 html 文件加载。现在 html 字符串有文本区域。用户可以编辑它。现在我想将更改保存为内部存储中的 html 文件。我该怎么做。我检查了其他 SO 问题并且都使用相同的方法,即使用 URL 或使用一些在我的情况下不起作用的 javascript 方法。
我试过how to get html content from a webview?,但对我没有帮助。我认为这实际上会打开显示代码的弹出窗口,甚至不允许用户进行编辑,这不是我的情况。
代码(这里的文本区域由 TinyMCE 编辑器提供):
try {
InputStream input = getApplicationContext().getAssets().open("sample.html");
//Reader is = new BufferedReader( new InputStreamReader(input, "windows-1252"));
StringBuilder contentBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader( new InputStreamReader(input, "windows-1252"));
String str;
while ((str = in.readLine()) != null) {
contentBuilder.append(str);
}
in.close();
} catch (IOException e) {
}
content = contentBuilder.toString();
content=content.replace("This is some content that will be editable with TinyMCE.", html);
view.getSettings().setJavaScriptEnabled(true);
view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
view.getSettings().setPluginState(WebSettings.PluginState.ON);
view.addJavascriptInterface(new WebAppInterface(this), "Android");
view.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");
view.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.HtmlViewer.showHTML" +
"('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
});
view.loadDataWithBaseURL("file:///android_asset/", content, "text/html",
"UTF-8", null);
【问题讨论】:
-
请向我们展示您的代码
-
@robjez 添加了代码。
-
@arun 在哪里是用于在编辑后获取 html 并通过在内部存储中单击 android 按钮将其保存的代码。
-
@arun 你可以为上面的代码编写代码,以便在用户编辑编辑器内容后保存在按钮单击上。很容易说问题是一样的。