Браузер подал проблему в штормовом устройстве ежевики - PullRequest
0 голосов
/ 12 января 2011

Я использую поле браузера, и оно отображается в симуляторе 4.7 storm. Но когда я выполняю на устройстве, оно остается пустым, и страница не отображается. Кто-нибудь может помочь.

Ответы [ 2 ]

0 голосов
/ 16 мая 2011

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

0 голосов
/ 13 января 2011

Вот код, я попытался добавить "; interface = true" к URL-адресу, который все еще не выполняется на устройстве 9550, тогда как в симуляторе 9550 он выполняет

/ * * BrowserFieldDemo.java * * Copyright © 1998-2009 Research In Motion Ltd. * * Примечание. Для простоты в этом примере приложения может не использоваться * комплекты ресурсов и строки ресурсов. Тем не менее, это настоятельно рекомендуется * разработчики приложений используют доступные возможности локализации * в рамках платформы разработки BlackBerry для обеспечения бесперебойного применения * опыт работы на разных языках и в разных регионах. Для дополнительной информации * о локализации вашего приложения, пожалуйста, обратитесь к BlackBerry Java Development * Руководство по развитию окружающей среды, связанное с этим выпуском. * /

import java.io.IOException;

import javax.microedition.io.HttpConnection;

import net.rim.device.api.browser.field. ; import net.rim.device.api.io.http.HttpHeaders; импорт net.rim.device.api.system.Application; импорт net.rim.device.api.ui. ; импорт net.rim.device.api.ui.component.Status; import net.rim.device.api.ui.container.MainScreen; импорт net.rim.device.api.system. *;

конечный класс BrowserFieldDemo расширяет UiApplication, реализует RenderingApplication {

private static final String REFERER = "referer";   

private RenderingSession _renderingSession;   
private HttpConnection  _currentConnection;
private MainScreen _mainScreen;


/***************************************************************************
 * Main.
 **************************************************************************/
public static void main(String[] args) 
{
    BrowserFieldDemo app = new BrowserFieldDemo();
    app.enterEventDispatcher();
}

private BrowserFieldDemo() 
{        

    _mainScreen = new MainScreen();        
    pushScreen(_mainScreen);
    _renderingSession = RenderingSession.getNewInstance();

    // Enable javascript.
    //_renderingSession.getRenderingOptions().setProperty(RenderingOptions.CORE_OPTIONS_GUID, RenderingOptions.JAVASCRIPT_ENABLED, true);                        

    PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread("http://wwww.vensi.com"+";interface=true", null, null, null, this);
    thread.start();                       

}

void processConnection(HttpConnection connection, Event e) 
{
    // Cancel previous request.
    if (_currentConnection != null) 
    {
        try 
        {
            _currentConnection.close();
        } 
        catch (IOException e1) 
        {
        }
    }

    _currentConnection = connection;

    BrowserContent browserContent = null;

    try 
    {
        browserContent = _renderingSession.getBrowserContent(connection, this, e);

        if (browserContent != null) 
        {
            Field field = browserContent.getDisplayableContent();

            if (field != null) 
            {
                synchronized (Application.getEventLock()) 
                {
                    _mainScreen.deleteAll();
                    _mainScreen.add(field);
                }
            }

            browserContent.finishLoading();
        }

    } 
    catch (RenderingException re) 
    {
    } 
    finally 
    {
        SecondaryResourceFetchThread.doneAddingImages();
    }

}    

/**
 * @see net.rim.device.api.browser.RenderingApplication#eventOccurred(net.rim.device.api.browser.Event)
 */
public Object eventOccurred(Event event) 
{
    int eventId = event.getUID();

    switch (eventId) 
    {
        case Event.EVENT_URL_REQUESTED : 
        {
            UrlRequestedEvent urlRequestedEvent = (UrlRequestedEvent) event;    

            PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread(urlRequestedEvent.getURL(),
                                                                                     urlRequestedEvent.getHeaders(), 
                                                                                     urlRequestedEvent.getPostData(),
                                                                                     event, this);
            thread.start();

            break;

        } 
        case Event.EVENT_BROWSER_CONTENT_CHANGED: 
        {                
            // Browser field title might have changed update title.
            BrowserContentChangedEvent browserContentChangedEvent = (BrowserContentChangedEvent) event; 

            if (browserContentChangedEvent.getSource() instanceof BrowserContent) 
            { 
                BrowserContent browserField = (BrowserContent) browserContentChangedEvent.getSource(); 
                String newTitle = browserField.getTitle();
                if (newTitle != null) 
                {
                    synchronized (getAppEventLock()) 
                    { 
                        _mainScreen.setTitle(newTitle);
                    }                                               
                }                                       
            }                   

            break;                

        } 
        case Event.EVENT_REDIRECT : 
        {
            RedirectEvent e = (RedirectEvent) event;
            String referrer = e.getSourceURL();

            switch (e.getType()) 
            {  
                case RedirectEvent.TYPE_SINGLE_FRAME_REDIRECT :
                    // Show redirect message.
                    Application.getApplication().invokeAndWait(new Runnable() 
                    {
                        public void run() 
                        {
                            Status.show("You are being redirected to a different page...");
                        }
                    });

                break;

                case RedirectEvent.TYPE_JAVASCRIPT :
                    break;

                case RedirectEvent.TYPE_META :
                    // MSIE and Mozilla don't send a Referer for META Refresh.
                    referrer = null;     
                    break;

                case RedirectEvent.TYPE_300_REDIRECT :
                    // MSIE, Mozilla, and Opera all send the original
                    // request's Referer as the Referer for the new
                    // request.
                    Object eventSource = e.getSource();
                    if (eventSource instanceof HttpConnection) 
                    {
                        referrer = ((HttpConnection)eventSource).getRequestProperty(REFERER);
                    }

                    break;
                }

                HttpHeaders requestHeaders = new HttpHeaders();
                requestHeaders.setProperty(REFERER, referrer);
                PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread(e.getLocation(), requestHeaders,null, event, this);
                thread.start();
                break;

        } 
        case Event.EVENT_CLOSE :
            // TODO: close the appication
            break;

        case Event.EVENT_SET_HEADER :        // No cache support.
        case Event.EVENT_SET_HTTP_COOKIE :   // No cookie support.
        case Event.EVENT_HISTORY :           // No history support.
        case Event.EVENT_EXECUTING_SCRIPT :  // No progress bar is supported.
        case Event.EVENT_FULL_WINDOW :       // No full window support.
        case Event.EVENT_STOP :              // No stop loading support.
        default :
    }

    return null;
}

/**
 * @see net.rim.device.api.browser.RenderingApplication#getAvailableHeight(net.rim.device.api.browser.BrowserContent)
 */
public int getAvailableHeight(BrowserContent browserField) 
{
    // Field has full screen.
    return Display.getHeight();
}

/**
 * @see net.rim.device.api.browser.RenderingApplication#getAvailableWidth(net.rim.device.api.browser.BrowserContent)
 */
public int getAvailableWidth(BrowserContent browserField) 
{
    // Field has full screen.
    return Display.getWidth();
}

/**
 * @see net.rim.device.api.browser.RenderingApplication#getHistoryPosition(net.rim.device.api.browser.BrowserContent)
 */
public int getHistoryPosition(BrowserContent browserField) 
{
    // No history support.
    return 0;
}


/**
 * @see net.rim.device.api.browser.RenderingApplication#getHTTPCookie(java.lang.String)
 */
public String getHTTPCookie(String url) 
{
    // No cookie support.
    return null;
}

/**
 * @see net.rim.device.api.browser.RenderingApplication#getResource(net.rim.device.api.browser.RequestedResource,
 *      net.rim.device.api.browser.BrowserContent)
 */
public HttpConnection getResource( RequestedResource resource, BrowserContent referrer) 
{
    if (resource == null) 
    {
        return null;
    }

    // Check if this is cache-only request.
    if (resource.isCacheOnly()) 
    {
        // No cache support.
        return null;
    }

    String url = resource.getUrl();

    if (url == null) 
    {
        return null;
    }

    // If referrer is null we must return the connection.
    if (referrer == null) 
    {
        HttpConnection connection = Utilities.makeConnection(resource.getUrl(), resource.getRequestHeaders(), null);

        return connection;

    } 
    else 
    {
        // If referrer is provided we can set up the connection on a separate thread.
        SecondaryResourceFetchThread.enqueue(resource, referrer);
    }

    return null;
}

/**
 * @see net.rim.device.api.browser.RenderingApplication#invokeRunnable(java.lang.Runnable)
 */
public void invokeRunnable(Runnable runnable) 
{       
    (new Thread(runnable)).start();
}    

}

класс PrimaryResourceFetchThread расширяет поток {

private BrowserFieldDemo _application;
private Event _event;
private byte[] _postData;
private HttpHeaders _requestHeaders;
private String _url;

PrimaryResourceFetchThread(String url, HttpHeaders requestHeaders, byte[] postData, 
                              Event event, BrowserFieldDemo application) 
{
    _url = url;
    _requestHeaders = requestHeaders;
    _postData = postData;
    _application = application;
    _event = event;
}

public void run() 
{
    HttpConnection connection = Utilities.makeConnection(_url, _requestHeaders, _postData);
    _application.processConnection(connection, _event);        
}

} * * тысяча двадцать-один

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