黑莓:无法修改手机屏幕

时间:2012-02-23 10:40:52

标签: blackberry

每次拨打电话时,我都会尝试在PhoneScreen上显示自定义图像和文字。我已经实现了PhoneListener接口并尝试了以下代码:

    PhoneScreen phoneScreen = new PhoneScreen(callId, app);
    phoneScreen.deleteAll(); // Empty the default PhoneScreen

    phoneScreen.setScreenBackground(0xFF0000);
    phoneScreen.setScreenBackground(0x00FF00);

    BitmapField bmf = new BitmapField(Bitmap.getBitmapResource("img.png"), Field.FIELD_TOP);
    LabelField labelField = new LabelField("Location");

    PhoneScreenVerticalManager psvm = new PhoneScreenVerticalManager();
    psvm.add(bmf);
    psvm.add(labelField);

    phoneScreen.add(psvm);
    phoneScreen.sendDataToScreen();

程序因第二行崩溃,我尝试清空默认的PhoneScreen。如果我对该行进行评论,那么它会在PhoneScreen的底部显示图像,同时保留默认PhoneScreen中的所有其他字段。

我想删除默认PhoneScreen中的所有字段并添加自定义字段。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

一个hackish解决方案:在PhoneListener实现中,获取当前活动的屏幕并将其用作PhoneScreen。然后清空屏幕,以便添加自己的字段。

类似的东西:

    Screen phoneScreen = UiApplication.getUiApplication().getActiveScreen();
    phoneScreen.deleteAll();
    // Add your own fields to phoneScreen now

答案 1 :(得分:0)

移除对phoneScreen.deleteAll()的调用。

执行上述行时,将抛出RuntimeException异常,其中“Manager为空”。消息。

如果您使用的是BlackBerry API 6.0及更高版本,请考虑使用ScreenModel#getPhoneScreen()代替PhoneScreen(),因为后者已弃用。查看this development guide了解详情。

编辑:恕我直言,无法完全自定义PhoneScreen和默认的“字段”(不确定它们是偶数字段),例如图片,电话号码等等,将始终出现在以编程方式添加的字段之前。