0

我一直试图在浏览器字段中显示来自 SD 卡的一些 HTML 内容,并且每次浏览器字段都呈现基本 URL 而不是呈现 HTML 数据。我试图找到相同的原因,但找不到任何解决方案。我没有找到任何清楚解释何时调用该基本 URL 的文档。谁能解释为什么以及何时调用该基本 URL?任何帮助都非常感谢...

提前致谢。

4

2 回答 2

1

也许它会帮助你。这个答案解释了如何以两种方式显示来自 sdcard 的 html 内容

1)将数据读取为文本文件并将其添加到字符串并按以下方式显示该内容

StringBuffer sb1;                 

                FileConnection fconn = (FileConnection)Connector.open("filepath="file:///SDCard/BlackBerry/documents/HtmlFileName.txt", Connector.READ_WRITE);
                if (fconn.exists())
                {
                    InputStream input=fconn.openDataInputStream();
                    sb1=new StringBuffer();
                    int chars,i=0;
                    while((chars=input.read())!=-1)
                    {
                        sb1.append((char)chars);
                    }

               }

    String str=sb1.toString();

    VerticalFieldManager vfm = new VerticalFieldManager(VERTICAL_SCROLL|VERTICAL_SCROLL_MASK);
    BrowserFieldConfig browserFieldConfig = new BrowserFieldConfig();
    browserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_POINTER);
    browserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_CARET);
    browserFieldConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED,Boolean.TRUE);
    browserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE_POINTER.toString(),Boolean.TRUE);
    browserFieldConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR,Boolean.TRUE);
    BrowserField browser_field=new BrowserField(browserFieldConfig);
    browser_field.displayContent(str,"");
        vfm.add(browser_field);
        add(vfm);

2)您可以直接从浏览器字段调用该页面,如下所示

String url="file:///sdcard/index.html";//specify exact path if resource then local:///.if sd card file:///
    VerticalFieldManager manager=new VerticalFieldManager(VERTICAL_SCROLL|VERTICAL_SCROLLBAR|HORIZONTAL_SCROLL|HORIZONTAL_SCROLLBAR){
                protected void sublayout(int maxWidth, int maxHeight) {
                    super.sublayout(640,Display.getHeight());
                    setExtent(640,Display.getHeight());
                }
            };
            BrowserFieldConfig myBrowserFieldConfig = new BrowserFieldConfig();
                myBrowserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
                BrowserField browserField = new BrowserField(myBrowserFieldConfig);
                history=browserField.getHistory();
                browserField.requestContent(url);
                manager.add(browserField);
                browserField.requestContent(url);
                add(manager);
于 2012-05-10T14:07:45.503 回答
0

我意识到这有点老了,但我遇到了同样的问题,想分享我是如何解决我的案子的。

事实证明,如果您尝试导航到 BrowserField 中的新页面,并且无法加载新页面或发生错误,则 BrowserField 将加载 Base URL。

这个问题在我身上发生了两次。在一个例子中,我的程序抛出了一个运行时异常,该异常被静默处理(偶然)。这会导致导航失败并加载基本 URL。在第二种情况下,我试图导航到的页面不存在(通过拼写错误或滥用文件名或位置)。

需要说明的是,加载的是原始页面的基本 URL,而不是加载失败的页面。

我希望这有帮助!

于 2012-06-21T15:08:20.007 回答