Blackberry BrowserField Base Url

时间:2012-05-10 09:46:20

标签: blackberry browserfield

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

可能会对你有所帮助。这个答案解释了如何以两种方式显示sdcard中的html内容

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

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);

答案 1 :(得分:0)

我意识到这有点老了,但我遇到了同样的问题,并希望分享我如何解决我的问题。

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

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

为了清楚起见,它是加载的原始页面的基本网址,而不是无法加载的网页。

我希望这有帮助!