每周一技:HyperLinkField
这是每周一技的第二篇了。
前一篇介绍了从BES读取contacts的技术以及遇到相关问题的解决方案(via 每周一技:从BES服务器上lookup联系人)。
本篇将介绍如何编写自定义的超级链接控件。
背景
在很多情况下,我们都会遇见超级连接的显示,遗憾的是在Blackberry没有提供类似于HyperLinkField的组件,这给我们增加了很多麻烦,如果能够解决该问题,将会是一个不错的选择。
分析
既然Blackberry API没有,我们自己可以写一个该Field,在这里,我们将之命名为HyperLinkField,以符合Blackberry API命名的规则。
实现
先看几张效果图:
图1,当focus在其他field时HyperLinkField的样式.
图2 当光标移到该field上时,颜色会变蓝,当然你也可以更改颜色。
图3,当点击该Field时,
图4,其菜单如下
该Get Page就会打开连接。
在编写代码需要注意一下几个地方:
参数的设置
Layout的处理
如何paint
菜单的处理
点击该field如何处理
下面给出部分重要的代码。
package com.taigoo.blackberry.weekskills.hyperlink;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.DrawStyle;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.ContextMenu;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.XYRect;
import net.rim.device.api.system.Display;
import net.rim.blackberry.api.browser.*;
public class HyperLinkField extends Field {
private String _displayName ;
private String _url;
private Font _font;
private MenuItem _openMenuItem;
/**
[...]
Confach发表于 July 14, 2009 7:35 pm | 留言 |每周一技
故技重施:Blackberry Push API
大概是6月初,RIM以很强的声势推出一个新服务,名曰Blackberry Push API。在没有看文档前,我非常憧憬RIM能给我们带来惊喜。但是我看完之后,发现RIM仅仅把原来的技术重新包装了一遍。
从商业的角度讲,我非常赞成RIM的这种做法,现在的很多新概念有很多都是把N年以前的东西拿出来翻新一下,例如AJax,SaaS等,都取得了不错的效果。
但是从技术角度上讲,也确实没什么。
我将该服务总结为一句话,即将Blackberry最具特色的PUSH功能应用到客户的需求上。
即便如此,我还是将我N年以前使用过的技术重温一下,顺便也说说PUSH API 的应用。
应用背景:
先举个例子,未必是真实的。假如上海有家出租车公司小众(不是大众),要通知司机小张,有个客户在人民广场的来福士广场有个客户于14:00需要车,那么小众通过何种方式将这个信息传给小张呢?假如小众公司正在使用Blackberry的服务,那么可以通过Alert的方式来实现。
现在总结一下:
alert
新闻
财经
定单
文档
体育
服务不仅仅限于上面。
原理:
先看张图
简要解释一下:
先解释身份角色:
Push Initiator:相当于小众公司,后面见车简称PI
Blackberry Push Data Server:相当于部署在小众公司的Blackberry服务基础架构,后面简称BPIS
Mobile Client:司机小张的Blackberry终端,简称,MC
再解释一下流程:
PI发送一个push请求,即客户信息
BPIS给出一个返回给PI
BPIS就请求push给MC
MC收到后给出一个ACKnowledge,确认
BPIS给PI一个通知
PI收到后给BPIS一个返回
类似的机制和互联网的三次握手类似,就是Request/ACK/Response.目的就是为了保证大家都收到。
优点
很显然,省电,能够及时送达,安全,包括传送,以及安全送达。
实现
PAP
XML HTTP 请求
几种push,例如submit,cancel,query等,具体技术细节不讲,因为这些又可以单独拿出来了。
综合上述,如果您熟悉PUSH,是不是觉得似曾相识呢。
不管怎么说,从中,我们可以进一步,也更清晰了解Blackberry PUSH这个概念。这在以后的解决方案中提供不少思路。
Confach发表于 June 29, 2009 7:46 pm | 留言(2) |开发
黑莓通过编程的方式挂电话
最近使用了很多在Blackberry运行的来电防火墙软件。其实他们的实现方式很简单。
先分析一下,如何挂断电话呢?如果你在RIM提供的API里找一圈,你会特别失望,因为它根本没有提供对应的API。这点上,我觉得RIM特别不道德。
但是是不是没有方法了呢?我觉得办法还是有的。
我想出的办法就是模拟挂电话这个操作。
3个步骤:
按下去:press down
按住,哪怕0.1s:Hold on
松开: press up
代码如下:
EventInjector.KeyEvent pressEndKey=
new EventInjector.KeyEvent(EventInjector.KeyEvent.KEY_DOWN,
Keypad.map(Keypad.KEY_END),KeypadListener.STATUS_NOT_FROM_KEYPAD,100);
EventInjector.KeyEvent releaseEndKey=
new EventInjector.KeyEvent(
EventInjector.KeyEvent.KEY_UP,
[...]
Confach发表于 October 13, 2008 5:56 pm | 留言(8) |开发
最新留言
- 高超:还有我按照http://www.52blackberry.com/thread-291671-1-1.html这个网站的方法实验过,还是不可以,不知道哪里做的不对
- 高超:说实话我没有看懂说的是什么,但是我很想像楼主那样使用SB的应用,我想楼主详细的告诉我应该怎么操作才能使用。谢谢 另:我没有使用移动的SB,那又点贵,不知道楼主的方法是不是需要移动推入,我使用的是blackberry的8520,支持WIFI 等待回复谢谢
- nio:ESS和MDS设置完毕之后,还是无法接收邮件,请较如下: MDS设置中的 Email.userId是写邮箱登陆用户名? Email.address需要修改么? Email.personal需要修改么? ESS设置中的 Email.personal跟MDS中的Email.personal有关系吗? Email.address跟MDS中的Email.address有关系吗? 以上两项应该设置成什么? ps:我用的是126的邮箱,用本地的outlook没有问题~
- 涂鸦:姜还是老的辣。
- Kirsten30MG:A lot of professors demand to examine the writing technique, hence, people have to choose dissertation service to buy free dissertation. In such way people show academic level. And as well you should get thesis.
