3
WebView web_view = (WebView) findViewById(R.id.webView1);
        web_view.getSettings().setJavaScriptEnabled(true);
        web_view.getSettings().setPluginsEnabled(true);
        web_view.getSettings().setAllowFileAccess(true);

        String data;
        data = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
                + "<html>"
                + "<head>"
                + "<title>My First chart using FusionCharts XT</title>"
                + "<script type=\"text/javascript\" src=\"FusionCharts.js\">"
                + "</script>"
                + "</head>"
                + "<body>"
                + "<div id=\"chartContainer\">FusionCharts XT will load here!</div>"
                + "<script type=\"text/javascript\">"
                + "FusionCharts.setCurrentRenderer(\"javascript\");"
                + "var myChart = new FusionCharts(\"FusionCharts/Line.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\" );"
                + "var dataString =\"<chart> <set label='0.00' value='0'/><set label='5.00' value='2' /><set label='7.00' value='3' /><set label='9.00' value='4' /><set label='12.00' value='2' /></chart>\"; "
                + "myChart.setXMLData(dataString);"
                + "myChart.render(\"chartContainer\");" + "</script>"
                + "</body>" + "</html>";

        Log.i("info", "Html " + data);

        web_view.loadData(data, "text/html; charset=UTF-8",null);

私のプロジェクトでは、フュージョン チャートを使用しています。上記のコードサンプルのように、html文字列データを作成してWebViewにロードしています。このhtmlファイルをブラウザで実行すると実行され、Fusionチャートになりますが、Android Webビューでこれを行っていると、Webビューにロードされません。私はすでにJavaScriptを有効にしています。javascript ファイルを assets フォルダーに貼り付けます。

4

1 に答える 1

4

まず第一に、あなたが言及したブラウザはあなたのデバイス上のブラウザですか、それともコンピュータのブラウザですか?

これで、Androidブラウザー(またはデバイスのブラウザー)で機能した場合、問題はjavascriptファイルがアセットフォルダーにあるためです。相対パス(使用方法)を介してリソースを指定すると、WebビューはHTMLファイルと同じフォルダーを基準にしてリソースを検索します。「htmlファイル」として文字列を使用しているので、loadDataWithBaseURL()を使用することをお勧めします。以下にアセットフォルダをベースURLとして使用例を作成しました。試してみてください。

web_view.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8",null);

public void loadDataWithBaseURL(String baseUrl、String data、String mimeType、String encoding、String historyUrl)

APIレベル1で追加コンテンツのベースURLとしてbaseUrlを使用して、指定されたデータをこのWebViewにロードします。ベースURLは、相対URLを解決する場合と、JavaScriptの同一生成元ポリシーを適用する場合の両方に使用されます。historyUrlは、履歴エントリに使用されます。

この方法で指定されたコンテンツは、baseUrlが「http」、「https」、「ftp」、「ftps」、「about」、または「javascript」以外のスキームを指定した場合にのみ、(「file」スキームURLを介して)ローカルデバイスファイルにアクセスできることに注意してください。 '。

ベースURLがデータスキームを使用する場合、このメソッドはloadData()を呼び出すことと同等であり、historyUrlは無視されます。

パラメータbaseUrlページのベースURLとして使用するURL。nullの場合、デフォルトは「about:blank」です。data指定されたエンコーディングのデータの文字列mimeTypeデータのMIMEType(例:'text / html')。nullの場合、デフォルトは「text/html」です。エンコーディングデータのエンコーディングhistoryUrl履歴エントリとして使用するURL。nullの場合、デフォルトは「about:blank」です。

アセットフォルダーをbaseUrlとして渡すことができるので、コードは次のようになると思います。

お役に立てれば!

于 2013-01-09T19:17:58.143 に答える