Blackberry BrowserField Base Url

Я пытался показать некоторое содержимое HTML с SD-карты в поле браузера, и каждый раз вместо отображения данных HTML поле браузера отображает базовый URL-адрес. Я пытался найти причину этого и не мог найти никакого решения. Я не нашел никакой документации, которая бы четко объясняла, когда вызывается этот базовый URL. Может ли кто-нибудь объяснить, почему и когда этот базовый URL вызывается? Любая помощь высоко ценится...

Заранее спасибо.

2 ответа

Может быть, это поможет вам. Этот ответ объясняет, как отобразить HTML-контент с SDCard двумя способами

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

Я понимаю, что это немного устарело, но у меня была та же проблема, и я хотел поделиться тем, как я решил свое дело.

Оказывается, что если вы попытаетесь перейти на новую страницу в BrowserField, и новая страница не может быть загружена или возникнет ошибка, BrowserField загрузит базовый URL.

Эта проблема произошла со мной дважды. В одном случае моя программа вызвала исключение во время выполнения, которое было обработано тихо (случайно). Это привело к сбою навигации и загрузке базового URL. Во втором случае страница, на которую я пытался перейти, не существовала (из-за неправильного написания или неправильного использования имен файлов или местоположений).

Просто чтобы быть понятным, это был базовый URL исходной страницы, который был загружен, а не страница, которая не смогла загрузить.

Надеюсь, это поможет!

Другие вопросы по тегам