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 исходной страницы, который был загружен, а не страница, которая не смогла загрузить.
Надеюсь, это поможет!