5857


どなたかご助力下さい。

`getFilesDir()` で、 `data/data/パッケージ名/Files/○○○` の下に

  * css フォルダ
  * javascript フォルダ
  * 画像フォルダ
  * html ファイル

を配置しています。

※ これらは HTML 経由で ZIP ファイルをダウンロード後、こちらに解凍しております。

この HTML ファイルを `WebView` の `loadURL` で読み込ませたところ、 JavaScript や CSS は反応しませんでした。

※ HTML に記述済みのコードは実行されています。

JavaScript や CSS を使うにはどうしたらよろしいでしょうか？

何卒、宜しくお願い致します。

追記 2016/2/4

ご回答頂いた皆様ありがとうございます。

JavaScripte 側で JQuery を使用しておりまして、  
その JQuery の Ajax が原因で読み込みが出来ていないようでした。

そこで、 .setAllowUniversalAccessFromFileURLs() を使用し表示することは出来ました。

皆様の知恵をお貸し頂き大変助かりました。  
ありがとうございました。


CC BY-SA 3.0
2015-02-02T09:39:35.193
5780
2015-02-04T05:29:07.150
2015-02-04T05:29:07.150
8033
8033
question
android javascript css html
getFilesDir() でローカルに保存した HTML ファイルが動きません


再現しませんでした。  
下記を実行すると、cssが適用されました。

[code]

    package com.example.myapp;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.webkit.WebView;
    
    import java.io.*;
    
    public class MyActivity extends Activity {
        private WebView webView;
        private File file;
    
        /**
         * Called when the activity is first created.
         */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            this.webView = (WebView)this.findViewById(R.id.webview);
            //テスト用のhtml,cssをファイルに保存
            this.file = writeToFile("samplehtml.html", "hello world");
            writeToFile("samplecss.css", "body{color:#FF0000}");
        }
    
        @Override
        protected void onStart() {
            super.onStart();
            Log.d("sample", "htmlfile = " + file.getAbsolutePath());
            this.webView.loadUrl("file://" + file.getAbsolutePath());
        }
    
        private File writeToFile(String fileName, String content) {
            PrintWriter writer = null;
            try {
                final FileOutputStream out = this.openFileOutput(fileName, MODE_PRIVATE);
                writer = new PrintWriter(new OutputStreamWriter(out));
                writer.append(content);
                return this.getFileStreamPath(fileName);
            } catch (FileNotFoundException e) {
                throw new RuntimeException(e);
            } finally {
                if(writer!=null) {
                    writer.close();
                }
            }
        }
    }
    
[/code]

logcat出力

> com.example.myapp D/sample﹕htmlfile =
> /data/data/com.example.myapp/files/samplehtml.html

画面  
![htmlからリンクしたcssが効いてテキストが赤くなってるの図](https://i.stack.imgur.com/Stp6X.png)


CC BY-SA 3.0
2015-02-03T10:12:18.543
5857
2015-02-03T10:12:18.543
7572
5780
answer


実装を見ていないので何とも言えませんが、使用しているWebViewに対して、  
Javascriptの有効化を行っているでしょうか。

> webview.getSettings().setJavaScriptEnabled(true);


CC BY-SA 3.0
2015-02-03T11:11:16.067
5871
2015-02-03T11:11:16.067
7241
5780
answer