在 BlackBerry sim 上使用“;deviceside=true”执行 browserfield 时出现问题

2023-12-12

我正在尝试使用中给出的示例代码Apress 高级黑莓开发书。问题是当我使用 MDS 启动模拟器时,会显示网页。但是当我将“;deviceside=true”附加到url,然后启动没有MDS的模拟器时,网页不会显示。仅显示白色屏幕。

import java.io.IOException;
import java.util.*;

import javax.microedition.io.*;

import net.rim.device.api.browser.field.*;
import net.rim.device.api.io.http.HttpHeaders;
import net.rim.device.api.system.Application;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.*;

public class BrowserScreen extends MainScreen implements Runnable,
        RenderingApplication
{
    private RenderingSession renderSession;
    private LabelField status;
    private StatusUpdater updater;
    private String url;

    public BrowserScreen()
    {
        renderSession = RenderingSession.getNewInstance();
        status = new LabelField("Loading...");
        add(status);
        updater = new StatusUpdater(status);
        url = "http://www.google.com";
        (new Thread(this)).start();
    }

    private class BrowserFieldContainer extends VerticalFieldManager
    {
        public BrowserFieldContainer()
        {
            super(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR
                    | Manager.FIELD_HCENTER);
        }

        public void sublayout(int maxWidth, int maxHeight)
        {
            int width = BrowserScreen.this.getWidth();
            int height = BrowserScreen.this.getHeight();
            super.sublayout((int) (width * .9), height / 2);
        }
    }

    public void run()
    {
        HttpConnection conn = null;
        try
        {
            conn = (HttpConnection) Connector.open(url);
            updater.sendDelayedMessage("Connection opened");
            BrowserContent browserContent = renderSession.getBrowserContent(
                    conn, this, null);
            if (browserContent != null)
            {
                Field field = browserContent.getDisplayableContent();
                if (field != null)
                {
                    synchronized (Application.getEventLock())
                    {
                        deleteAll();
                        add(status);
                        add(new LabelField("Your search starts here."));
                        BrowserFieldContainer container = 
                            new BrowserFieldContainer();
                        container.add(field);
                        add(container);
                        add(new LabelField("Don't forget to tip the service!"));
                    }
                }
                browserContent.finishLoading();
            }
        }
        catch (Exception e)
        {
            updater.sendDelayedMessage(e.getMessage());
        }
        finally
        {
            try
            {
                if (conn != null)
                {
                    conn.close();
                }
            }
            catch (Exception e)
            {
            }
        }
    }

    public Object eventOccurred(Event event)
    {
        if (event.getUID() == Event.EVENT_URL_REQUESTED)
        {
            UrlRequestedEvent urlRequestedEvent = (UrlRequestedEvent) event;
            url = urlRequestedEvent.getURL();
            (new Thread(this)).start();
        }
        updater.sendDelayedMessage("Handle event " + event.getUID() + " for "
                + event.getSourceURL());
        return null;
    }

    public int getAvailableHeight(BrowserContent browserContent)
    {
        return getHeight() / 2;
    }

    public int getAvailableWidth(BrowserContent browserContent)
    {
        return (int) (getWidth() * .9);
    }

    public String getHTTPCookie(String url)
    {
        return null;
    }

    public int getHistoryPosition(BrowserContent browserContent)
    {
        return 0;
    }

protected HttpConnection getResourceConnection(String url,
        HttpHeaders requestHeaders)
{
    HttpConnection connection = null;
    try
    {
        connection = (HttpConnection) Connector.open(url);
        if (requestHeaders != null)
        {
            Hashtable headers = requestHeaders.toHashtable();
            if (headers != null)
            {
                Enumeration names = headers.keys();
                while (names.hasMoreElements())
                {
                    String name = (String) names.nextElement();
                    String value = (String) headers.get(name);
                    connection.setRequestProperty(name, value);
                }
            }
        }
    }
    catch (IOException ioe)
    {
        updater.sendDelayedMessage(ioe.getMessage());
    }
    return connection;
}

    public HttpConnection getResource(final RequestedResource resource,
            final BrowserContent referrer)
    {
        if (resource == null || resource.isCacheOnly())
        {
            return null;
        }

        String url = resource.getUrl();

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

        if (referrer == null)
        {
            return getResourceConnection(resource.getUrl(), resource
                    .getRequestHeaders());
        }
        else
        {
            (new Thread()
            {
                public void run()
                {
                    HttpConnection connection = getResourceConnection(resource
                            .getUrl(), resource.getRequestHeaders());
                    resource.setHttpConnection(connection);
                    referrer.resourceReady(resource);
                }
            }).start();
        }
        return null;
    }

    public void invokeRunnable(Runnable runnable)
    {
        (new Thread(runnable)).start();
    }

}

检查你的 deviceSide 参数;您输入“ture”而不是“true”!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 BlackBerry sim 上使用“;deviceside=true”执行 browserfield 时出现问题 的相关文章

随机推荐

  • 将div变成链接

    我有一个 div 阻止一些我不想改变的奇特的视觉内容 我想让它成为一个可点击的链接 我正在寻找类似的东西 a href div div a 但这是有效的 XHTML 1 1 来到这里是希望找到一个更好的解决方案 但我不喜欢这里提供的任何解决
  • 使用存储在一个固定(流)文档中的 VisualBrush 进行及时控制的快照

    我需要及时拍摄 Control 的快照并将它们存储在一个固定文档中 问题是 VisualBrush 在某种程度上是 懒惰的 并且不会通过将其添加到文档来评估自身 当我最终创建文档时 所有页面都包含相同 最后 的控制状态 虽然 VisualB
  • Jasper iReport 自定义日期和自定义时间

    在 Excel 中 我有一个日期格式 yyyy MM dd hh mm 和一个时间格式 hh mm 我将其设置为 iReport 数据库的源 对于日期 我在 iReport 中设置了自定义日期格式 与 Excel 中相同 然后我设置类 ja
  • Keras 模型训练良好,但预测的值相同

    让我们尝试制作MobileNet V 2在嘈杂的图像上找到一条亮带 是的 使用深度卷积网络来实现这样的策略有点过分了 但最初它的目的就像烟雾测试一样 以确保模型有效 我们将使用合成数据对其进行训练 import numpy as np im
  • matplotlib 中的自动缩放,在同一图表中绘制不同的时间序列

    我有一个 主 熊猫数据框 其中包含多个术语的 极性 值的时间序列 我想使用其中的 4 个 因此我提取了 4 个单独的数据帧 其中包含时间序列 所有术语的时间序列相同 但极性值不同 我使用下面的代码将它们绘制在 4 个单独的 matplotl
  • 在keras中使用Conv3d将多个图像输入到同一个CNN

    我想使用 conv3d 将 8 张图像同时输入到同一个 CNN 结构中 我的CNN模型如下 def build sample frame height width channels classes model Sequential inpu
  • 弹性搜索,多个索引与一个索引以及不同数据集的类型?

    我有一个使用 MVC 模式开发的应用程序 我现在想索引它的多个模型 这意味着每个模型都有不同的数据结构 是使用多个索引 每个模型一个 还是每个模型在同一索引中使用一个类型更好 我认为这两种方式都需要不同的搜索查询 我刚刚开始做这个 如果数据
  • MVC HttpRequestValidationException 异常

    我正在编写 MVC 5 互联网应用程序 并且有一个关于HttpRequestValidationException例外 我之前在控制器中的代码如下 protected override void OnException ExceptionC
  • 使用 Socket.BeginAccept/EndAccept 进行多个连接

    与同步不同Accept BeginAccept不为新创建的连接提供套接字 EndAccept然而 它也会阻止未来的连接被接受 所以我编写了以下代码来允许多个 客户端 连接到我的服务器 serverSocket BeginAccept Acc
  • Angular 2 服务双向数据绑定

    我有一个salary service and a player component 如果服务中的工资变量更新 玩家组件中的视图是否也会更新 或者 Angular 2 中不是这样吗 当页面首次加载时 我在player component 视图
  • JNI 集成到 AOSP 构建中

    我需要通过添加一些自定义库来更改 设置 应用程序 但我在配置方面遇到问题 当我尝试调用 System loadLibrary mylibrary 时 我得到libraryPath data app lib com settings 1 fi
  • 使用 System.Transactions 时保存点的替代方案

    我如何使用来自的课程System Transactions命名空间以达到与我使用时类似的效果SqlTransaction Save 保存点 and SqlTransaction Rollback savePoint 使用这两种方法的效果是能
  • MySql 连接中的 Java ClassNotFoundException (java.sql.SQLType)

    我正在开发一个android应用程序 它连接到正在工作的mysql服务器 但现在出现java lang ClassNotFoundException错误 找不到类 java sql SQLType 我不知道发生了什么 我唯一改变的是mysq
  • 如何在电子邮件正文中添加图像

    我想在电子邮件正文中添加图像 我不想在电子邮件中附加图像 而是在电子邮件正文中添加图像 这个怎么做 我正在用这个 img src or img src 然后图像就这样显示 不幸的是 用意图来做到这一点是不可能的 例如 粗体文本显示在 Edi
  • 停止 Delphi Indy 线程而不必等待结束超时

    这是我第一次使用 Delphi 开发多线程应用程序 所以一切对我来说仍然很新鲜 但我读了很多书 我的线程很简单 简而言之 我只是使用 Indy IdHTTP 来获取网页的内容 然后验证内容是否包含字符串 这里没有问题 现在 为了终止线程 我
  • AlarmManager 在模拟器中触发,但不在物理设备上触发

    我有一个调用 AlarmManager 的应用程序 Intent intent intent new Intent context MyEventReceiver class PendingIntent appIntent PendingI
  • 在Android中维护标准应用程序Activity返回堆栈状态(使用singleTask启动模式)

    我无法找到如何维护开发中的 Android 应用程序的状态 只是为了澄清 我不是在谈论维护活动状态 即跟踪特定活动的文本框值 复选框等 比方说 我的应用程序有两个活动A and B 当我启动我的应用程序时 它会带我进行活动A 然后按下按钮即
  • 使用多个合约运行 WCF ServiceHost

    使用单个合约运行 ServiceHost 工作正常 如下所示 servicehost new ServiceHost typeof MyService1 servicehost AddServiceEndpoint typeof IMySe
  • 付款 - IAP 或第三方

    我们正在开发一个 iOS 应用程序 该应用程序提供一些可在应用程序内使用的积分 付费 我们对此几乎没有疑问 我们可以使用 Paypal 或类似的第三方支付网关吗 或者我们需要为此实施 IAP 如果需要实施IAP 那么分成比例是多少 如果我们
  • 在 BlackBerry sim 上使用“;deviceside=true”执行 browserfield 时出现问题

    我正在尝试使用中给出的示例代码Apress 高级黑莓开发书 问题是当我使用 MDS 启动模拟器时 会显示网页 但是当我将 deviceside true 附加到url 然后启动没有MDS的模拟器时 网页不会显示 仅显示白色屏幕 import