Проблема BlackBerry с просмотром

я разработал приложение, которое выходит в Интернет через мобильное приложение, используя j2me для мобильных телефонов nokia, но когда я попытался запустить это приложение на устройствах Blackberry, у меня возникла проблема с ним, ни один веб-сайт не хочет открываться, он просто зависает, так что кто-нибудь может мне помочь пожалуйста, потому что я не смог найти для этого решения эти r строки кода, которые я использую в приложении

эту строку я использую, чтобы прочитать что-то из Интернета

hc = (HttpConnection) Connector.open(url); dis = hc.openDataInputStream(); 
int dataleft = dis.available(); 
for (int j = 0; j < dataleft; j++) {
     buffer.append((char) dis.read()); 
}
dis.close(); 
hc.close();

и эта строка, чтобы открыть веб-сайт

this.platformRequest("http://stackoverflow.com/questions");

person Hesham    schedule 07.02.2011    source источник


Ответы (1)


Вы, вероятно, запускаете этот код (который имеет некоторые проблемы... не полагайтесь на available(), чтобы быть точным, вы должны просто вызывать read(), пока он не вернет -1) в потоке событий, что является большим нет -нет на BlackBerry. Приложение, вероятно, пытается запросить у пользователя разрешение на выполнение HTTP-запроса, но, поскольку четный поток заблокирован, оно не может этого сделать. В ветке событий BlackBerry есть довольно хорошее описание того, что делать и чего не делать:

http://www.thinkingblackberry.com/archives/182

Это также упоминается в документации API для HttpConnection:

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

Документация по API находится по адресу:

http://www.blackberry.com/developers/docs/4.5.0api/javax/microedition/io/HttpConnection.html

person Eric Giguere    schedule 07.02.2011
comment
поэтому я думаю, что проблема может быть решена, если я решу проблему с потоком - person Hesham; 07.02.2011
comment
Я перепробовал все решения с потоками, но кажется безнадежным, так что, пожалуйста, скажите мне, как я могу решить проблему с потоком?? - person Hesham; 07.02.2011
comment
Трудно сказать, не видя кода. Но вы обязательно должны убедиться, что вы вызываете Connector.open() в отдельном потоке. Вы также должны обязательно перехватывать исключения и т. д., чтобы убедиться, что код работает так, как вы ожидаете. - person Eric Giguere; 07.02.2011
comment
он отлично работает с мобильными телефонами Nokia, но я не знаю, что не так с Blackberry - person Hesham; 07.02.2011
comment
Весь ваш код находится в одном потоке? Если да, то это определенно проблема BlackBerry. - person Eric Giguere; 07.02.2011
comment
попробуйте {buffer.setLength (0); HttpConnection hc = ноль; DataInputStream dis = ноль; hc = (HttpConnection) Connector.open(url); dis = hc.openDataInputStream(); int dataleft = недоступен(); for (int j = 0; j ‹ dataleft; j++) { buffer.append((char) dis.read()); } закрыть(); hc.close(); } catch (IOException e) { System.err.println(Ошибка при подключении к API!); e.printStackTrace(); } - person Hesham; 07.02.2011
comment
Вы не понимаете. Вы запускаете этот код в отдельном потоке или нет? Если вы не разбираетесь в тредах, вы должны узнать о них, прежде чем делать что-либо еще на BlackBerry. - person Eric Giguere; 07.02.2011
comment
послушайте, я опишу вам программу, сначала, когда вы открываете приложение, оно запрашивает страну и номер телефона, затем я отправляю их на веб-страницу, которая проверяет доступность этих данных и возвращает 1 или 0, вот и все, и если он доступен, когда я вхожу в приложение, есть несколько кнопок, которые переносят меня на веб-страницу с открытием веб-браузера. - person Hesham; 07.02.2011
comment
1-я проблема связана с отправкой этих данных в Интернет, а 2-я проблема заключается в том, что я открываю веб-браузер. - person Hesham; 07.02.2011
comment
да, возможно, ты прав, я должен узнать кое-что о тредах, в любом случае спасибо за твою помощь :) - person Hesham; 07.02.2011