criando itens de menu em aplicativos nativos com a blackberry api

7

Click here to load reader

Upload: ricardo-ogliari

Post on 09-Jul-2015

1.044 views

Category:

Technology


1 download

DESCRIPTION

Criando itens de menu em aplicativos nativos com a BlackBerry API

TRANSCRIPT

Page 1: Criando itens de menu em aplicativos nativos com a BlackBerry API

Criando itens de menu em aplicativos nativos com

a BlackBerry API

Boa tarde...

Primeiramente, gostaria de falar que este post foi inspirado no texto

“Crie Aplicativos BlackBerry com Ferramentas de Software Livre, Parte 3:

Construindo um Aplicativo de Redes de Relacionamentos”. Ele mostra

como criar um aplicativo que insere um menu item no aplicativo de tarefas

do BlackBerry, permitindo que uma tarefa seja enviada para um contato do

device.

Bem, a idéia aqui é demonstrar como podemos criar um item de

menu em aplicativos nativos do aparelho. Vamos criar um aplicativo que

vai interferir em três aplicações nativas: despertador, calendário e

visualização de email.

O primeiro passo é criar uma aplicação BlackBerry básica. Nos

tutoriais anteriores criados pelo Mobilidade é Tudo, sempre criamos classes

que extendiam de UiApplication. Desta vez, extendemos apenas de

Application. Porque isso, porque nossa aplicação não terá interface gráfica,

será apenas uma aplicação sem interação direta com o usuário. Veja como

fica nossa classe principal na Listagem 1:

1) Listagem 1

0: import net.rim.device.api.system.Application;

1: import net.rim.blackberry.api.menuitem.*;

2: class Principal extends Application

3: {

4: public static void main(String[] args)

5: {

6: Principal theApp = new Principal ();

7: }

Page 2: Criando itens de menu em aplicativos nativos com a BlackBerry API

8:

9: public Principal ()

10: {

11: ApplicationMenuItemRepository.getInstance().addMenuItem

(ApplicationMenuItemRepository.MENUITEM_CALENDAR, new CalendarMenus(0,

"Compartilhar evento"));

12:

13: ApplicationMenuItemRepository.getInstance().addMenuItem

(ApplicationMenuItemRepository.MENUITEM_EMAIL_VIEW, new

MenuItemEV(0));

14:

15: ApplicationMenuItemRepository.getInstance().addMenuItem

(ApplicationMenuItemRepository.MENUITEM_ALARM, new MenuItemDesp());

16: }

17: }

Veja na linha 2 a palavra extends seguida da classe Application. No

método main (linha 4) apenas chamamos o construtor da classe. Aqui

começa nossa brincadeira.

Para inserir um item de menu em aplicativos nativos usamos uma

instância da classe ApplicationMenuItemRepository, e, seu método

addMenuItem(). Perceba que criamos uma instância da classe sem a palavra

reservada nem, mas sim, com o uso do método getInstance(). Para o

método addMenuItem devemos passar dois, três ou quatro parâmetros.

Neste tutorial porém, vamos trabalhar com apenas dois construtores. O

primeiro representa um número long que identifica o aplicativo onde o item

do menu será inserido.

A classe ApplicationMenuItemRepository jê tem algumas ocnstantes

que representam estes valores. No exemplo usamos 3:

MENUITEM_CALENDAR, MENUITEM_EMAIL_VIEW e

MENUITEM_ALARM. Consulte a documentação da classe para ver todas

as constantes.

O segundo parâmetro do método representa uma classe que seja uma

ApplicationMenuItem, o caso mais conhecido é a herança. Ou seja,

qualquer classe que herde de ApplicationMenuItem. Além disso, a classe

deve seguir um contrato, implementando alguns métodos. Esses métodos

são: Object run(Object context) e String toString().

Por exemplo, volte à primeira listagem de código, veja a linha 11.

Passamos como segundo parâmetro uma instância da classe

CalendarMenus. Veja na Listagem 2:

Page 3: Criando itens de menu em aplicativos nativos com a BlackBerry API

2) Listagem 2

01: import javax.microedition.pim.Contact;

02: import javax.microedition.pim.Event;

03: import javax.microedition.pim.PIM;

04: import net.rim.blackberry.api.menuitem.ApplicationMenuItem;

05: import net.rim.blackberry.api.pdap.BlackBerryContactList;

06: import net.rim.device.api.ui.component.Dialog;

07:

08: class CalendarMenus extends ApplicationMenuItem {

09: String myname;

10: CalendarMenus(int order,String name)

11: {

12: super(order);

13: myname = name;

14: }

15:

16: public Object run(Object context)

17: {

18: if (context instanceof Event)

19: {

20: try

21: {

22: Event evt = (Event) context;

23: handleCalendarEvent(evt);

24: }

25: catch (Exception ex)

26: {

27: ex.printStackTrace();

28: }

29:

30: }

31: return context;

32: }

33:

34: public String toString(){

35: return myname;

36: }

37:

38: public void handleCalendarEvent(Event e)

39: {

40: try

41: {

42: net.rim.blackberry.api.pdap.BlackBerryContactList

contactList = (BlackBerryContactList)

PIM.getInstance().openPIMList(PIM.CONTACT_LIST,PIM.READ_ONLY);

43: Contact c =

contactList.choose(null,BlackBerryContactList.AddressTypes.EMAIL,false

);

44: if (c == null)

45: {

46: Dialog.alert("escolha um contato");

47: }

48: else

49: {

50: String emailAddress = c.getString(Contact.EMAIL,0);

51: String[] nameFragments = c.getStringArray(Contact.NAME,

0);

Page 4: Criando itens de menu em aplicativos nativos com a BlackBerry API

52: String eventData = nameFragments[1]+"

"+nameFragments[0]+", você foi convidado para:\n";

53: eventData+="Oque?: "+e.getString(Event.SUMMARY,0)+"\n";

54: eventData+="Onde:"+e.getString(Event.LOCATION,0)+"\n";

55: eventData+="Quando:"+new

java.util.Date(e.getDate(Event.START,0)).toString() + " until " + new

java.util.Date(e.getDate(Event.END,0)).toString() + "\n";

56:

57: Dialog.alert(eventData);

58: }

59:

60: }

61: catch (Exception ee)

62: {

63: System.err.println(ee.getMessage());

64: ee.printStackTrace();

65: }

66: }

67: }

Na última listagem sobrescrevemos os métodos necessários para

termos um item de menu válido. O método toString() serve para informar

qual o rótulo que o item mostrará no display. Logo, na linha 35 apenas

retornamos a string recebida por parâmetro no construtor da classe (linha

13). O método run, na linha 16, é a ação que será executada quando o

nosso item for acionado.

No nosso exemplo vamos mostrar os detalhes da tarefa em um

Dialog. Então, na primeira linha do run (linha 18), verificamos se contexto

que chamou a ação é mesmo uma instância da classe Event. Caso

afirmativo, apenas chamamos o método handleCalendarEvent.

No método handleCalendarEvent, criamos uma instância da classe

BlackBerryContactList, que, segundo a própria documentação da RIM,

contém a implementação de uma lista de contatos (classe ContactList)

especifica para BlackBerry (linha 42). Na linha seguinte esperamos pela

escolha do usuário para criar a instância de um objeto Contact.

Ao selecionar um contato passaremos pelo teste se da linha 44. Nas

linhas 50 e 51 recuperamos o email e o nome do contato selecionado. Aliás,

esse assunto já é relacionado a PIM API do Java ME, que permite que você

veja a agenda e lista de tarefas do device, por exemplo. Seguindo, das

linhas 75 até a 79 montamos uma String, acessando campos do evento

através de constantes da casse EVENT. Na linha 81 nós mostramos a

mensagem em um Dialog.

Vamos ver em imagem oque construímos aqui. Na Figura 1

apresentamos o aplicativo de tarefas nativa do BlackBerry. Na listagem 2

mostramos o mesmo aplicativo com o nosso menu item. Na Figura 3

Page 5: Criando itens de menu em aplicativos nativos com a BlackBerry API

podemos ver oque a classe BlackBerryContactList faz. E, por fim, a Figura

4 mostra a mensagem que construímos acessando os campos das classes

Event e Contact.

Figura 1: Aplicativo de tarefas nativa do dispositivo.

Figura 2: Aplicativo de tarefa com nosso menu item.

Page 6: Criando itens de menu em aplicativos nativos com a BlackBerry API

Figura 3: lista de contatos.

Figura 4: mensagem entregue pelo aplicativo.

Page 7: Criando itens de menu em aplicativos nativos com a BlackBerry API

Assim como criamos um menu item para o aplicativo de tarefa,

podemos inserir itens em diversos aplicativos nativos. Por exemplo, veja a

Figura 5 e 6, que inserem itens nos aplicativos de despertador e

visualizador de email do BlackBerry.

Figura 4: aplicativo nativo de despertador com o nosso item de menu

“Alarme do Ping”.

Figura 4: aplicativo nativo de leitura de email com o nosso menu item

“Ver mensagem Out”.