如何在Android应用中嵌入HTML代码?

时间:2011-08-02 23:06:47

标签: android android-layout

我正在编写一个应用程序,我需要在Android应用程序中嵌入HTML对象,我按照此处给出的教程:http://mobile.tutsplus.com/tutorials/android/android-sdk-embed-a-webview-with-the-webkit-engine/并相应地修改了代码,以下是代码,但我得到一个白色屏幕...

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        WebView engine = (WebView) findViewById(R.id.web_engine);

    engine.getSettings().setJavaScriptEnabled(true);
    engine.getSettings().setPluginsEnabled(true); 
    engine.getSettings().setAppCacheEnabled(false); 
    engine.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

        String data = "<html>" +
                "<body>" +
                "bb"+
                "<object width=\"450\" height=\"300\" align=\"middle\"><param name=\"movie\" value=\"http://www.raaga.com/widgets/top10/widgettopten.swf?l=H&q=1\" /><param name=\"wmode\" value=\"transparent\"><embed src=\"http://www.raaga.com/widgets/top10/widgettopten.swf?l=H&q=1\" width=\"450\" height=\"300\" align=\"middle\" type=\"application/x-shockwave-flash\" wmode=\"transparent\"  FlashVars=\"gig_lt=1312323434023&gig_pt=1312325057958&gig_g=2\"/> <param name=\"FlashVars\" value=\"gig_lt=1312323434023&gig_pt=1312325057958&gig_g=2\" /></object>"+
                "gg"+
                "</body>" +
                "</html>";

        engine.loadData(data, "text/html", "UTF-8");
    }
}

我要嵌入的对象是:

<object width="450" height="300" align="middle"><param name="movie" value="http://www.raaga.com/widgets/top10/widgettopten.swf?l=H&q=1" /><param name="wmode" value="transparent"><embed src="http://www.raaga.com/widgets/top10/widgettopten.swf?l=H&q=1" width="450" height="300" align="middle" type="application/x-shockwave-flash" wmode="transparent"  FlashVars="gig_lt=1312323434023&gig_pt=1312326303531&gig_g=2"/> <param name="FlashVars" value="gig_lt=1312323434023&gig_pt=1312326303531&gig_g=2" /></object>

5 个答案:

答案 0 :(得分:11)

将文件放在/ assets目录中,您可以使用file:/// android_asset / directory访问它。

不是将html放在代码中,而是将资源文件夹放在静态数据文件中,例如HTML及其相关的CSS,图像和JavaScript文件等。然后您可以使用WebView.loadUrl()。这样做的好处是不必使用Java String转义和繁琐的编辑。您可以在自己喜欢的Web项目编辑器中单独创建文件,然后复制并粘贴它们。如果您需要在运行时编辑该文件,您仍然可以从assets目录加载该文件,而不必担心Java String转义和繁琐的编辑。然后应用修改并转到WebView.loadData()

要帮助调试此问题,请执行WebChromeClient.onLoadResource并查看console message tutorial

不要忘记使用PackageManager.getPackageInfo()检查闪光灯是否可用。如果不是,您可以向用户提供download it from the market的选项。

答案 1 :(得分:1)

Android没有正式的Flash查看器,所以它不知道如何处理嵌入式SWF。

如果您在代码中放入其他(可见)HTML,则应该能够在视图中看到它。

如果您尝试通过网络浏览器访问SWF,则应该会收到一个损坏/丢失的插件图标。

答案 2 :(得分:0)

您是否在Android清单中声明了互联网权限?要访问远程服务器上的SWF,您将需要它。

答案 3 :(得分:0)

您需要在网络视图中启用插件:

engine.getSettings().setPluginsEnabled(true);

答案 4 :(得分:0)

嵌入HTML文件非常简单,将其加载到WebView中更加简单。这里:

创建HTML文件,并将其放入项目的资产文件中。就我而言:“proj / assets / license.html”

    WebView w = new WebView(this);
    // Load the asset file by URL. Note the 3 slashes "file:///".
    w.loadUrl("file:///android_asset/license.html");

就是这样。