【问题标题】:Blackberry BrowserField Base UrlBlackberry BrowserField Base Url
【发布时间】:2012-05-10 09:46:19
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: blackberry browserfield


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

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

      事实证明,如果你尝试在 BrowserField 中导航到一个新页面,并且新页面无法加载或出现错误,BrowserField 将加载 Base URL。

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

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

      我希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多