Professional Documents
Culture Documents
Nota:
Em casos onde exista mais de um Content Handler para um tipo específico de arquivo (por
exemplo, havendo dois players de MP3 instalados em um dispositivo), a aplicação invocadora
pode indicar a aplicação que deseja executar através de um ID.
A especificação deixa claro que podem existir dois modos de execução do processo de
manipulação de conteúdo (content handling), dependendo das capacidades de processamento em
paralelo do dispositivo. Em aparelhos onde a execução simultânea de mais de um aplicativo é
possível, a API determina que o manipulador do conteúdo pode ser executado em paralelo e
devolver uma resposta à aplicação invocadora sem que esta tenha que ser finalizada. Em casos onde
somente uma aplicação pode ser executada por vez, a aplicação invocadora deve ser fechada antes
que o conteúdo possa ser devidamente manipulado.
O pacote javax.microedition.content
A CHAPI é uma API pequena: composta de apenas sete classes (incluindo uma classe de exceção
genérica), ela resume todos os mecanismos necessários para invocar um content handler e obter
uma resposta, registrar e desregistrar um content handler, pesquisar por content handlers instalados
e responder a invocações. A Tabela 1 resume estas classes.
Classe Descrição
Registry Responsável por invocar, registrar, desregistrar e iniciar
invocações de content handlers.
ContentHandler Provê os detalhes sobre um handler registrado no aparelho: Id,
autorizações de acesso, nome da aplicação, content types etc.
Invocation Contém os parâmetros passados e retornados para o
ContentHandler durante uma requisição.
ContentListener Listener que notifica a aplicação sobre requisições ou respostas de
requisições pendentes.
ContentHandlerServer Permite o processamento de requisições e sua finalização.
ActionNameMap Mapeia ações para nomes (descritivos).
ContentHandlerException Classe genérica de erros em uma manipulação de conteúdo.
Tabela 1. Classes da CHAPI
Atenção
O único modelo de conexão implementado obrigatoriamente no MIDP 2.0 é o HttpConnection. No
entanto, dispositivos que disponham de outros modelos de conectividade podem fornecer conteúdo
para content handlers utilizando quaisquer protocolos disponíveis. Um dispositivo que disponha de
sistema de arquivos, por exemplo, pode fornecer a URI de um arquivo em seu filesystem
(“file:///drive:/meuarquivo.gif”, por exemplo) no ato de criação do objeto Invocation.
Atenção
Por tratar-se de um recurso facilmente mal utilizado, a declaração de MIDlets como Content Handler
requer que os mesmos sejam assinados ou autorizados pelo usuário. MIDlets projetados para funcionar
como Content Handlers devem fazer parte do domínio de segurança
javax.microedition.content.ContentHandler.
Dos atributos do descritor, apenas os atributos iniciados por MicroEdition-Handler merecem uma
explicação detalhada:
MicroEdition-Handler-<número>: estes atributos descrevem os manipuladores incluídos no Midlet
Suite. Os argumentos do parâmetro são o nome da classe responsável pela manipulação de conteúdo
(no nosso caso VcardViewer e VCardEditor), os MIME types tratados, as operação suportadas pelo
manipulador (no nosso caso, apenas open e edit) e a extensão (sufixos) dos arquivos tratados pelo
content handler.
MicroEdition-Handler-<número>-<locale>: armazena os nomes descritivos de ações. Estes nomes
podem ser recuperados utilizando-se a classe ActionNameMap, para exibição na tela, por
exemplo, e podem ser internacionalizados.
MicroEdition-Handler-ID: o identificador único deste pacote de content handlers no aparelho. Este
identificador não precisa ser fornecido no descritor (a implementação pode gerar um ID
automaticamente).
null, null);
display.setCurrent(alert);
}
} catch (IOException ex) {
Alert alert = new Alert(“”, “Could not go there”, null, null);
display.setCurrent(alert);
}
public VCardViewer() {
// Register the listener to be notified of new requests
handler = Registry.forClass(this.getClass().getName());
handler.setListener(this);
}
Links
JSR 211 – Content Handler API
Página oficial do JSR, onde podem ser encontrados a especificação e o Javadoc mais atual.
Herval Freire (herval@sollipsis.com) é Sun Certified Java Programmer (SCJP), Web Components
Developer (SCWCD) e Micro Application Developer (SCMAD). Atua como consultor em projetos de
mobilidade e aplicações wireless, e nas horas vagas é mochileiro intergalático.