如何在blackberry-eclipse应用程序中使用html资源?

时间:2013-07-15 21:56:57

标签: eclipse blackberry java-me blackberry-eclipse-plugin

我是黑莓应用开发的初学者。

我已成功在 eclipse 中安装了 blackberry 插件。我的第一个应用程序需要从我在项目中创建名为“assets”的文件夹中加载html文件。那么如何加载html文件“assets / index.html”

public static void main(String[] args)
{
    // Create a new instance of the application and make the currently
    // running thread the application's event dispatch thread.
    Ramadanclass theApp = new Ramadanclass();       
    theApp.enterEventDispatcher();
}

mainscreen:

public final class Ramadan extends MainScreen
{ 

    public Ramadan()
    {                   
        setTitle("Ramadan");    
    }
} 

编辑:我尝试过的内容:

BrowserField myBrowserField = new BrowserField(); 
add(myBrowserField); 
myBrowserField.requestContent("assets/index.html"); 

出现此错误

  

资产/ index.html没有导航请求处理程序

1 个答案:

答案 0 :(得分:0)

正如the link that @Turdnugget supplied所说:

  

BrowserField类不使用文件夹结构访问资源。 BrowserField类显示找到的与指定文件名匹配的第一个资源。

这意味着即使您将index.html放入assets文件夹,BlackBerry构建过程和/或运行时也将展平(即忽略)您的目录结构,因此您'll必须加载html文件:

myBrowserField.requestContent("local:///index.html");

您可以想象,如果您的项目中只有一个名为index.html的文件,则此工作正常,但如果您有两个具有该名称的文件,则在不同的文件夹中,浏览器字段可能无法加载您想。我有项目,我有不同版本的html文件,根据设备或应用程序的版本(完整与免费)加载。所以,我希望能够将我的html资源存储在不同的文件夹中。

为实现这一目标,我在BrowserField使用了以下代码:

  browser = new BrowserField();
  add(browser);

  InputStream content = getClass().getResourceAsStream("/resourcesWeb/index.html");     
  try {
     byte[] html = IOUtilities.streamToBytes(content);
     browser.displayContent(new String(html), "http://localhost");
  } catch (IOException e) {
     e.printStackTrace();
  }

为了实现这一点,我将文件index.html存储在名为resourcesWeb的文件夹中(无论您喜欢将其命名),该文件夹位于顶级res文件夹中

请注意,这不是Android。通常没有assets目录。当您使用BlackBerry Eclipse插件创建新项目时,它会为您创建srcres文件夹。我会用那个。如果需要,创建一个新项目。然后,将所有非源代码资源(html,xml,图像等)保存在res文件夹下的某个位置。

如果您没有以这种方式创建项目,您可能会发现您的应用程序是在不包含您创建的assets文件夹的情况下构建的。您可以通过右键单击Eclipse中的项目并选择属性 修复此问题。您可以使用此对话框将assets文件夹添加到构建路径:

enter image description here

并注意assets也应显示在订单和导出标签中。

但是,我认为以BlackBerry Eclipse插件的方式创建和使用项目最简单。这也将使您的项目对于看到您的代码的其他BlackBerry Java开发人员更加熟悉。在我看来,你应该保存Android项目的Android命名约定。