Встроенный браузер BlackBerry: отображение изображений с использованием HTML - PullRequest
2 голосов
/ 27 января 2012

Я занимаюсь разработкой приложения BlackBerry, в котором для отображения html-контента используется встроенный браузер.
Тестирование приложения в Torch. Я понял, что браузером отображаются только встроенные изображения проекта, но у меня возникли проблемы с доступом к ресурсу изображенийфайлы, хранящиеся на съемной SD-карте или во внутренней файловой системе.
То же приложение, работающее на кривой, корректно отображает все изображения.
Вот фрагмент кода:

    browser = new BrowserField();

    Strimg img_1 = "file:///store/home/user/yellow.png";
    Strimg img_2 = "file:///SDCard/green.png";
    Strimg img_3 = "file:///local/images/red.png";

String  imgTag_1 = "<img src=\"" + img_1 + "\">"; // Stored on file system - Not displayed by Torch
String  imgTag_2 = "<img src=\"" + img_2 + "\">"; // Stored on SDCard - Not displayed by Torch
String  imgTag_3 = "<img src=\"" + img_3 + "\">"; // Embedded image

String browserContent = "<html>" + imgTag_1 + imgTag_2 + imgTag_3 + "</html>";

byte[] contentBytes;        
try {
    contentBytes = browserContent.getBytes("UTF-8");
    browser.displayContent(contentBytes, "text/html; charset=UTF-8", "http://mysite.com");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    browser.displayContent(browserContent, "http://mysite.com");
}

aVerticalManager.add(browser);


I 'м, используя JRE 5 для Curve и Torch.Использование FileConnector для доступа к файлу работает нормально.

Есть предложения о том, как отображать изображения как в Torch, так и в Curve?Спасибо

1 Ответ

2 голосов
/ 01 февраля 2012

Решено!
Здесь и далее код, описывающий, как я это сделал:

browser = new BrowserField();    
String img_1 = "file:///store/home/user/yellow.png"; // File Sistem

byte[] byt_1    = MyUtilClass.readBytesFromFile(img_1);
char[] base64_1 = MyUtilClass.Base64.encode(byt_1);

// Sample of generating HTML: <html><img src="data:image/bmp;base64,Axcfhhòjbnesohokòbw...."></img></html>
String imgTag_1 = "<html><img src= \"data:image/bmp;base64,"+ String.valueOf(base64_1) + "\" ></img></html>";

byte[] contentBytes;       

contentBytes = imgTag_1.getBytes("UTF-8");

// Inject HTML in browser
browser.displayContent(contentBytes, "text/html; charset=UTF-8", "http://mysite.com");


Итак, это отлично работает на Torch, но у меня плохая работа на Curve.Я буду специализировать поведение в зависимости от типа устройства.

if ( Curve == true ) {
// Use: <img src=file:///store/home/user/yellow.png>
} else  {
// Use: <img src="data:image/bmp;base64,Axcfhhòjbnesohokòbw...."></img>
}


Я знаю, что это обходной путь, но он работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...