2

リモートサーバーから文字列として取得したリモートHTMLコンテンツを含むWebビューを表示しています。アプリケーションを接続せずに使用するために、htmlをローカルに保存します。

さらに、.jsスクリプトと.cssスタイルファイルもローカルに保存します。これらのファイルはサーバーによって更新できます。

これらすべてのファイルを次のパスに保存します。

context.getFilesDir()+"content.css"
context.getFilesDir()+"content.js"

html文字列では、cssとjsは次のように参照されます。

<link rel="stylesheet" href="/content.css" type="text/css" media="screen">                                            
<script src="/content.js"></script>

を使用してHTMLをロードします

this.webView.loadDataWithBaseURL(getFilesDir().getAbsolutePath(), html, "text/html", "utf-8", "about:blank");

ただし、スタイルとjsは考慮されていないため、それらを参照したり、webViewを読み込んだりするために使用するパスに問題があると思います。では、これを行う方法は何ですか?「assets」フォルダを使用する回答がたくさん見つかりましたが、サーバーからcssとjsを更新する必要があるため、使用したくありません。

4

1 に答える 1

4

最後に私は解決策を見つけました:

  • css(またはjs)ファイルは、次の方法を使用してローカルに保存されます。

    public static void writeToFile(Context context, String content, String title) throws IOException {
    OutputStreamWriter osw = new OutputStreamWriter(context.openFileOutput(title,Context.MODE_WORLD_READABLE)); osw.write(content); osw.close(); }

  • 次に、htmlファイルでそれを使用して参照します

    <link rel="stylesheet" href="content.css" type="text/css" media="screen">
    <script src="content.js"></script>

  • そして最後に私は以下を使用してウェブビューを開きました:

    this.webView = (WebView) findViewById(R.id.webview); this.webView.getSettings().setJavaScriptEnabled(true); this.webView.getSettings().setPluginsEnabled(true); this.webView.setHorizontalScrollBarEnabled(false); this.webView.setVerticalScrollBarEnabled(true); this.webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); this.webView.setWebViewClient(this.controller.getWebViewClient()); String basePath = "file://"+getFilesDir().getAbsolutePath()+"/"; this.webView.loadDataWithBaseURL(basePath, data, "text/html", "utf-8", "about:blank");

于 2012-07-24T15:21:56.230 に答える