BlackBerry Java Application Integration Versione: 5.0. Guida allo sviluppo



Documenti analoghi
Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

BlackBerry Internet Service Uso dell'applicazione di configurazione della posta elettronica dello smartphone BlackBerry Versione: 2.

Configurazione di Outlook Express

Impossibile inviare o ricevere messaggi .

BlackBerry Internet Service Uso del browser dello smartphone BlackBerry Versione: 2.6. Manuale dell'utente

DocuShare Agent Guida per l'utente

bla bla Guard Manuale utente

Guida dell utente. Centro di fatturazione UPS

Conferencing. Novell. Conferencing 1.0. novdocx (it) 6 April 2007 AVVIARE IL CLIENT CONFERENCING: ACCESSO. Luglio 2007

Interfaccia di base di GroupWise WebAccess

GUIDA ALLA CONFIGURAZIONE E ALL UTILIZZO

BlackBerry Internet Service. Versione: Manuale utente

Guida in linea di Websense Secure Messaging

Il tuo manuale d'uso. BLACKBERRY INTERNET SERVICE

DocuShare Agent Guida per l'utente

Guida autore all'uso di Lotus Quickr

GESCO MOBILE per ANDROID

Chat. Connettersi a un server di chat. Modificare le impostazioni di chat. Ricevere impostazioni chat. Chat

Guida all'amministrazione. BlackBerry Professional Software per Microsoft Exchange. Versione: 4.1 Service Pack: 4

Avvio rapido per palmari Nokia serie 60

BlackBerry Internet Service Uso del browser dello smartphone BlackBerry Versione: 2.8. Manuale dell'utente

Internet Explorer 7. Gestione cookie

1.0 GUIDA PER L UTENTE

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Suite OmniTouch 8400 Instant Communications Interfaccia utente Touchtone (TUI, Touchtone User Interface)

Guida di riferimento rapido per Cisco ViewMail per Microsoft Outlook (versione 8.5 e successive)

Mon Ami 3000 MACommerce La soluzione per il commercio elettronico totalmente integrata con Mon Ami 3000

Documentazione. Divisione Sicurezza Dati

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

MANUALE UTENTE Fiscali Free

Edizione 1 IT. Nokia e Nokia Connecting People sono marchi registrati di Nokia Corporation

CTIconnect PRO. Guida Rapida

ARCHIVIAZIONE DOCUMENTI

per interventi strutturali di rafforzamento locale o di miglioramento sismico, - art. 2, comma 1, lettere b) e c) -

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

BlackBerry Internet Service Versione: 3.1. Manuale dell'utente

I M P O S T A R E U N A C C O U N T D I P O S T A C O N M O Z I L L A T H U N D E R B I R D

MANUALE UTENTE. TeamPortal Liste Distribuzioni

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente

Manuale Utente. Gestione Richieste supporto Data Warehouse. Della Ragioneria Generale dello Stato. Versione 1.0. Roma, Ottobre 2015

BlackBerry Desktop Software. Versione: 7.1. Manuale dell'utente

Problemi di visualizzazione

S.I.I.P.A.L. Sistema Informativo Integrato Pubblica Amministrazione Locale

Outlook Plugin per VTECRM

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

Configurare Outlook Express

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

POSTA ELETTRONICA Per ricevere ed inviare posta occorrono:

Istruzioni per l uso della Guida. Icone utilizzate in questa Guida. Istruzioni per l uso della Guida. Software di backup LaCie Guida per l utente

Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo Webservice

Manuale utente per gli ordini sul sito web

DENUNCE EDILCONNECT GUIDA COMPILAZIONE

Corso di Alfabetizzazione Informatica

Gli allarmi che possono essere inseriti sono di tre tipi diversi:

Manuale Utente MyFastPage

Manuale Utente - Titì Versione 1.1 Data ultimo aggiornamento 15 gennaio 2009

Software Servizi Web UOGA

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited

SUAP. Per gli operatori SUAP/amministratori. Per il richiedente

Corso basi di dati Installazione e gestione di PWS

GUIDA AL SOCIAL CARE

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

Designjet Partner Link Alert Service. Guida introduttiva

Test di unità con JUnit4

Gestione Interventi v1.1. Manuale d'uso.

A T I C _W E B G U I D A AL L A N A V I G A Z I O N E S U L S I T O D E L G R U P P O. Rev. 2.1

Manuale Utente Albo Pretorio GA

Comandi di Outlook Express Messaggi in partenza Comando Comandopulsante scelta rapida

Piattaforma elearning Lotus Quickr Guida studente alla piattaforma

SMS API. Documentazione Tecnica YouSMS HTTP API. YouSMS Evet Limited

Manuale LiveBox WEB ADMIN.

Manuale Utente. Gestione Richieste supporto BDAP. Versione 1.0

NOME 0 PROVIDER DOMINIO istruzione.it

Utilizzare Event Viewer

Guida introduttiva di F-Secure PSB

Manuale d'uso del Connection Manager

Integrazione InfiniteCRM - MailUp

GENERAZIONE RAPPORTO XML

bla bla Messenger Manuale utente

MANUALE PARCELLA FACILE PLUS INDICE

Fiery Driver Configurator

SISTEMA AFFILIAZIONE E TESSERAMENTO MANUALE UTENTE

Configurazione Zimbra mail per accedere alla propria casella di posta tramite il browser.

1

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

E-Post Office Manuale utente

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Istruzioni Installazione, Registrazione e Configurazione di PEC Mailer

Gestione della posta elettronica e della rubrica.

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

SELENE rel Sintesi Principali Modifiche ed Implementazioni

Software di gestione della stampante

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

Istruzioni per l utilizzo del software PEC Mailer

L ACQUISIZIONE E LA GESTIONE DEI DOCUMENTI ELETTRONICI

VERSIONE 5.1/5.2 GUIDA RAPIDA PER WEBACCESS HTML 3

ALTRO. v (Aprile 2015)

Il tuo manuale d'uso. LEXMARK X502N

GUIDA UTENTE PRIMA NOTA SEMPLICE

Transcript:

BlackBerry Java Application Integration Versione: 5.0 Guida allo sviluppo

Pubblicato: 2010-04-21 SWD-761936-0421111449-004

Indice 1 Integrazione con le applicazioni BlackBerry Device Software... 5 Richiamo di un'applicazione BlackBerry Device Software... 5 2 Elenco dei messaggi... 6 Creazione di un nuovo SMS vuoto... 6 Creazione di un nuovo SMS compilato... 6 Creazione di un nuovo MMS vuoto... 7 Creazione di un nuovo messaggio e-mail vuoto... 7 Creazione di un nuovo messaggio e-mail compilato... 7 Creazione di un nuovo messaggio PIN vuoto... 8 Creazione di un nuovo messaggio PIN compilato... 8 Ricezione della notifica di un messaggio... 8 Aggiunta di un listener all'archivio dei messaggi... 9 Aggiunta di un listener all'archivio dei messaggi per aggiornamenti in batch... 9 Aggiunta di un listener a una cartella... 10 Recupero del numero totale di messaggi e-mail da leggere in tutte le cartelle nell'archivio... 10 Per aprire un messaggio... 11 Recupero del testo di un messaggio e-mail... 11 Recupero del contenuto in testo normale e HTML nel testo di un messaggio e-mail utilizzando un metodo ricorsivo... 12 Recupero del contenuto in testo normale di un messaggio e-mail... 14 Recupero del contenuto HTML di un messaggio e-mail... 15 Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un messaggio e-mail... 18 Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un MMS... 19 Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un SMS... 19 Invio di un messaggio... 20 Per rispondere a un messaggio... 21 Per inoltrare un messaggio... 22 Utilizzo delle cartelle dei messaggi... 23 3 Allegati... 26 Creazione di un handler degli allegati... 26 Recupero dei contenuti di un allegato... 27 Recupero delle informazioni su un allegato... 27

Invio di un messaggio con un allegato... 27 Per scaricare automaticamente gli allegati... 28 4 Calendario... 30 Aprire il Calendario... 30 Visualizzazione o modifica di una voce del calendario... 30 Apertura di una nuova voce del calendario compilata... 31 Aggiornamento delle informazioni delle voci di calendario... 31 Recupero delle informazioni per le voci del calendario... 34 Esportazione di una voce del calendario... 35 Importazione di una voce del calendario... 35 Recupero di più elenchi di voci del calendario... 36 Invio a un'applicazione del dispositivo BlackBerry di una notifica circa le modifiche a un elenco di voci del calendario... 36 Invio a un'applicazione del dispositivo BlackBerry di una notifica circa la modifica dell'elenco predefinito di voci del calendario... 37 5 Elenco contatti... 38 Supporto per più elenchi contatti... 38 Apertura dell'applicazione Contatti... 38 Apertura dell'applicazione Contatti utilizzando i dati di contatto... 39 Apertura dell'applicazione Contatti con un elenco contatti specifico... 40 Creazione di un contatto e sua assegnazione a un elenco contatti... 41 Recupero delle informazioni di contatto... 42 Recupero dell'uid di un elenco contatti... 43 Esportazione di un contatto... 44 Importazione di un contatto... 45 Eliminazione di un contatto... 45 Invio a un'applicazione di una notifica circa la modifica di un elenco di contatti... 46 Collegamento di contatti di terzi a contatti nell'applicazione Contatti... 48 Collegamento di un contatto... 48 Rimozione di un collegamento... 50 Creazione di voci di menu per i contatti collegati... 50 Creazione di voci di menu per i contatti collegati... 51 Creazione di un campo personalizzato per i contatti collegati... 52

6 Elenco attività... 54 Visualizzazione o modifica di un'attività... 54 Creazione di una nuova attività vuota... 54 Creazione di una nuova attività compilata... 54 Apertura di un elenco delle attività... 55 Creazione di attività... 55 Aggiunta di informazioni sulle attività... 56 Modifica delle informazioni delle attività... 57 Salvataggio di un'attività... 57 Recupero delle informazioni sulle attività... 57 Esportazione di un'attività... 58 Importazione di un'attività... 59 Eliminazione di un'attività... 59 Chiusura dell'elenco delle attività... 60 Invio a un'applicazione del dispositivo BlackBerry di una notifica circa la modifica di un elenco di attività... 60 7 Telefono... 61 Come effettuare una chiamata da un'applicazione del dispositivo BlackBerry... 61 Come effettuare una chiamata da un'applicazione del dispositivo BlackBerry (ambiente a linea singola)... 61 Come effettuare una chiamata da un'applicazione del dispositivo BlackBerry (ambiente a più linee)... 61 Aggiunta di toni DTMF alla coda di invio... 62 Toni DTMF BlackBerry... 62 Ascolto e gestione di eventi telefonici... 63 Ascolto e gestione degli eventi a linea multipla... 63 Recupero delle informazioni sulle chiamate mediante i registri delle chiamate... 64 Recupero di un participante alla chiamata... 65 Recupero delle informazioni di una chiamata... 65 Recupero del numero di telefono di un dispositivo BlackBerry... 65 Recupero di una chiamata in base all'id... 66 Visualizzazione del contenuto su una schermata Telefono... 66 Visualizzazione del contenuto su una schermata Telefono... 67 8 BlackBerry Browser... 69 Recupero di una sessione di BlackBerry Browser... 69 Recupero di una sessione BlackBerry Browser non predefinita... 69 Richiesta di una pagina Web... 69

Supporto avanzato per il contenuto Web nelle applicazioni del dispositivo BlackBerry... 69 Visualizzazione del contenuto HTML in un campo del browser... 70 Visualizzazione del contenuto HTML da una pagina web in un campo del browser... 71 Visualizzazione del contenuto HTML da una risorsa nell'applicazione... 72 Configurazione di un campo del browser... 73 Invio dei dati dei moduli a un indirizzo Web in un campo del browser... 74 9 Voci di menu... 76 Aggiunta di voci di menu alle applicazioni BlackBerry Device Software... 76 Creazione e registrazione di una voce di menu... 76 10 Glossario... 78 11 Commenti e suggerimenti... 80 12 Cronologia delle revisioni del documento... 81 13 Note legali... 83

Integrazione con le applicazioni BlackBerry Device Software Integrazione con le applicazioni BlackBerry Device Software 1 Questa sezione descrive come richiamare un'applicazione BlackBerry Device Software, ad esempio l'applicazione Contatti, l'applicazione Telefono e l'applicazione multimediale. Per ulteriori informazioni sull'integrazione dell'applicazione con le applicazioni BlackBerry Device Software, vedere la panoramica della categoria Integrazione delle applicazioni nella documentazione di riferimento sulle API per BlackBerry Java Development Environment. Richiamo di un'applicazione BlackBerry Device Software È possibile creare applicazioni per dispositivi BlackBerry in grado di richiamare applicazioni BlackBerry Device Software come l'applicazione per i messaggi, l'applicazione Telefono e l'applicazione multimediale. L'applicazione in uso, quando richiama un'applicazione BlackBerry Device Software, può fare in modo cheblackberry Device Softwarequest'ultima esegua un'azione o visualizzi determinate informazioni. import net.rim.blackberry.api.invoke.calendararguments; import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.mapsarguments; import net.rim.blackberry.api.invoke.messagearguments; import net.rim.blackberry.api.invoke.phonearguments; 2. Richiamare il metodo Invoke.invokeApplication() e utilizzare i parametri appropriati. Ad esempio: Per avviare l'applicazione dei messaggi e creare un nuovo SMS vuoto, richiamare Invoke.invokeApplication () e utilizzare i seguenti parametri: Invoke.APP_TYPE_MESSAGES e un oggetto MessageArguments che utilizza il campo ARG_NEW_SMS. Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments( MessageArguments.ARG_NEW_SMS) ); Per avviare il calendario, richiamare Invoke.invokeApplication(APP_TYPE_CALENDAR, CalendarArguments). Per avviare l'applicazione Telefono, richiamare Invoke.invokeApplication (APP_TYPE_PHONE,PhoneArguments). Per avviare BlackBerry Maps e visualizzare la mappa predefinita, richiamare Invoke.invokeApplication() e fornire come parametri Invoke.APP_TYPE_MAPS e un nuovo oggetto MapsArguments. Invoke.invokeApplication(Invoke.APP_TYPE_MAPS, new MapsArguments() ); Per ulteriori informazioni sull'uso della classe net.rim.blackberry.api.invoke.invoke, vedere la documentazione di riferimento sulle API per BlackBerry Java Development Environment. 5

Elenco dei messaggi Elenco dei messaggi 2 Questa sezione descrive come utilizzare le funzionalità di messaggistica del dispositivo BlackBerry. Per ulteriori informazioni, vedere la panoramica della categoria Messaggistica nella documentazione di riferimento sulle API per BlackBerry Java Development Environment. Creazione di un nuovo SMS vuoto import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; 2. Richiamare Invoke.invokeApplication(). Utilizzare i seguenti parametri: il parametro di costante APP_TYPE_MESSAGES e un nuovo oggetto MessageArguments che utilizza il campo ARG_NEW_SMS. Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments( MessageArguments.ARG_NEW_SMS)); Creazione di un nuovo SMS compilato Utilizzare le voci dell'api nel pacchetto javax.wireless.messaging (JSR 120). import javax.microedition.io.connector; import javax.wireless.messaging.messageconnection; import javax.wireless.messaging.textmessage; import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; 2. Creare e compilare un nuovo oggetto TextMessage. MessageConnection mc = (MessageConnection)Connector.open("sms://"); TextMessage m = (TextMessage)mc.newMessage( MessageConnection.TEXT_MESSAGE ); m.setaddress("sms://5558888"); m.setpayloadtext("an SMS message for you"); 3. Richiamare Invoke.invokeApplication() con i seguenti parametri: APP_TYPE_MESSAGES come parametro di costante MessageArguments: un nuovo oggetto MessageArguments che utilizza il nuovo oggetto TextMessage. Invoke.invokeApplication( Invoke.APP_TYPE_MESSAGES, new MessageArguments(m) ); 6

Creazione di un nuovo MMS vuoto Creazione di un nuovo MMS vuoto import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; 2. Richiamare Invoke.invokeApplication() utilizzando il parametro di costante APP_TYPE_MESSAGES e un nuovo oggetto MessageArguments che utilizza il campo ARG_NEW_MMS. Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments( MessageArguments.ARG_NEW_MMS)); Creazione di un nuovo messaggio e-mail vuoto import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; 2. Richiamare Invoke.invokeApplication() utilizzando il parametro di costante APP_TYPE_MESSAGES e un nuovo oggetto MessageArguments che utilizza il campo ARG_NEW. Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments( MessageArguments.ARG_NEW)); Creazione di un nuovo messaggio e-mail compilato import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; import net.rim.blackberry.api.mail.address; import net.rim.blackberry.api.mail.message; 2. Creare e compilare un nuovo oggetto Message e-mail. Message m = new Message(); Address a = new Address("mLi@rim.com", "Ming Li"); Address[] addresses = a; m.addrecipients(net.rim.blackberry.api.mail.message.recipienttype.to, addresses); m.setcontent("a message for you..."); m.setsubject("email for you"); 3. Richiamare Invoke.invokeApplication() con i seguenti parametri: APP_TYPE_MESSAGES 7

Creazione di un nuovo messaggio PIN vuoto Un oggetto MessageArguments che utilizza il nuovo oggetto Message. Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments(m)); Creazione di un nuovo messaggio PIN vuoto import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; 2. Richiamare Invoke.invokeApplication() utilizzando il parametro di costante APP_TYPE_MESSAGES e un nuovo oggetto MessageArguments che utilizza il campo ARG_NEW_PIN. Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments( MessageArguments.ARG_NEW_PIN)); Creazione di un nuovo messaggio PIN compilato import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; import net.rim.blackberry.api.mail.address; import net.rim.blackberry.api.mail.message; import net.rim.blackberry.api.mail.pinaddress; 2. Creare e compilare un nuovo oggetto PIN. Message m = new Message(); PINAddress pa = new PINAddress("ABCDEF99", "Mark Chapters"); Address[] addresses = pa; m.addrecipients( net.rim.blackberry.api.mail.message.recipienttype.to, addresses ); m.setcontent("a message for you..."); m.setsubject("pin message for you"); 3. Richiamare Invoke.invokeApplication() con i seguenti parametri: APP_TYPE_MESSAGES Un oggetto MessageArguments che utilizza il nuovo oggetto PIN. Invoke.invokeApplication(Invoke.APP_TYPE_MESSAGES, new MessageArguments(m)); Ricezione della notifica di un messaggio 8

Aggiunta di un listener all'archivio dei messaggi import net.rim.blackberry.api.mail.event.folderlistener; import net.rim.blackberry.api.mail.event.storelistener; import net.rim.device.api.system.controlledaccessexception; 2. Implementare le interfacce FolderListener e StoreListener. public class MailTest implements FolderListener, StoreListener... 3. Verificare la presenza di ControlledAccessException se l'applicazione non dispone dell'autorizzazione per accedere a un oggetto. Aggiunta di un listener all'archivio dei messaggi import net.rim.blackberry.api.mail.nosuchserviceexception; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.store; 2. Creare un blocco try-catch per gestire un'eccezione NoSuchServiceException. try catch (NoSuchServiceException e) System.out.println(e.toString()); 3. Nel blocco try-catch richiamare Session.waitForDefaultSession().getStore() per recuperare l'oggetto Store. try Store store = Session.waitForDefaultSession().getStore(); catch (NoSuchServiceException e) System.out.println(e.toString()); 4. Dopo il blocco try-catch, richiamare store.addstorelistener() per aggiungere un'istanza di StoreListener all'oggetto Store. store.addstorelistener(this); Aggiunta di un listener all'archivio dei messaggi per aggiornamenti in batch 9

Aggiunta di un listener a una cartella import net.rim.blackberry.api.mail.event.storelistener; import net.rim.blackberry.api.mail.store; 2. Implementare l'interfaccia StoreListener. void batchoperation(storeevent e) // Perform action when messages added or removed in batch operation. Aggiunta di un listener a una cartella import net.rim.blackberry.api.mail.event.folderlistener; import net.rim.blackberry.api.mail.folder; import net.rim.blackberry.api.mail.store; 2. Implementare FolderListener.messagesAdded() e FolderListener.messagesRemoved(). void messagesadded(folderevent e) // Perform processing on added messages. void messagesremoved(folderevent e) // Perform processing on removed messages. 3. Recuperare l'oggetto Folder per il quale si desidera ricevere le notifiche di nuovi messaggi. Folder[] folders = store.list(folder.inbox); Folder inbox = folders[0]; 4. Registrare la classe che implementa FolderListener nella cartella. inbox.addfolderlistener(this); Recupero del numero totale di messaggi e-mail da leggere in tutte le cartelle nell'archivio 1. Importare la classe richiesta. import net.rim.blackberry.api.mail.store; 2. Richiamare Store.getUnreadMessageCount(). int numunread = store.getunreadmessagecount(); 10

Per aprire un messaggio Per aprire un messaggio import java.util.date; import net.rim.blackberry.api.mail.address; import net.rim.blackberry.api.mail.folder; import net.rim.blackberry.api.mail.message; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.store; 2. Richiamare Session.waitForDefaultSession.getStore() per recuperare l'archivio dei messaggi. Store store = Session.waitForDefaultSession.getStore(); 3. Richiamare Store.getFolder() per recuperare la cartella che contiene il messaggio. Folder folder = Store.getFolder("SampleFolder"); 4. Richiamare folder.getmessages() per recuperare gli oggetti di messaggio e memorizzarli in una serie Message. Scorrere la serie e recuperare le informazioni, ad esempio mittente e oggetto, che devono essere visualizzate dall'utente del dispositivo BlackBerry. Message[] msgs = folder.getmessages(); 5. Quando un utente seleziona un messaggio dall'elenco, richiamare i metodi sull'oggetto Message per recuperare i campi e i contenuti di testo appropriati che devono essere visualizzati dall'utente. Message msg = msgs[0]; // Retrieve the first message Address[] recipients = msg.getrecipients(message.recipienttype.to); Date sent = msg.getsentdate(); Address from = msg.getfrom(); String subject = msg.getsubject(); Object o = msg.getcontent(); // Verify that the message is not multipart if ( o instanceof String ) String body = (String)o; //... 6. Richiamare Message.getBodyText() su un messaggio per recuperare i contenuti in testo normale come String. Se il messaggio non contiene testo normale, il metodo restituisce null. Recupero del testo di un messaggio e-mail Un messaggio e-mail può contenere testo in formato normale, HTML o entrambi. Il contenuto e il rispettivo ordine nel messaggio e-mail possono variare. 11

Recupero del testo di un messaggio e-mail Un'applicazione del dispositivo BlackBerry può utilizzare la classe MimeBodyPart per recuperare il contenuto HTML, oppure la classe TextBodyPart per recuperare il contenuto in testo normale. Utilizzare un oggetto Multipart per recuperare gli oggetti dalle classi MimeBodyPart e TextBodyPart. Ad esempio, è possibile recuperare il contenuto di un messaggio e-mail per tradurlo in un'altra lingua. Il supporto per testo e HTML è stato introdotto in BlackBerry Device Software 4.5 per dispositivi BlackBerry associati a BlackBerry Enterprise Server 4.1 Service Pack 6 (4.1.6) o BlackBerry Internet Service 2.5. Recupero del contenuto in testo normale e HTML nel testo di un messaggio e-mail utilizzando un metodo ricorsivo Creare un metodo ricorsivo per recuperare tutte le parti del testo di un messaggio e-mail, sia normale e che in formato HTML. import net.rim.blackberry.api.mail.mimebodypart; import net.rim.blackberry.api.mail.multipart; import net.rim.blackberry.api.mail.supportedattachmentpart; import net.rim.blackberry.api.mail.textbodypart; import net.rim.blackberry.api.mail.unsupportedattachmentpart; 2. Creare la firma per il metodo ricorsivo. void findemailbody(object obj)... 3. Creare le variabili locali che indicano se BlackBerry Attachment Service supporta il tipo di allegato del messaggio. boolean _hassupportedattachment; boolean _hasunsupportedattachment; 4. Inizializzare le variabili locali. _hassupportedattachment = false; _hasunsupportedattachment = false; 5. Se il parametro del metodo è un oggetto Multipart, l'oggetto ha più oggetti BodyPart. Richiamare su ogni oggetto BodyPart il metodo ricorsivo che esegue la ricerca nel testo di un messaggio e-mail. if(obj instanceof Multipart) _Multipart mp = (Multipart)obj; //Extract all of the parts within the Multipart message. for(int count=0; count < mp.getcount(); ++count) findemailbody(mp.getbodypart(count)); 6. Se l'oggetto BodyPart è di tipo TextBodyPart, recupera il testo normale del messaggio. 12

Recupero del testo di un messaggio e-mail else if (obj instanceof TextBodyPart) //This message only has a text body. TextBodyPart tbp = (TextBodyPart) obj; reademailbody(tbp); 7. Verificare se l'oggetto BodyPart è di tipo MimeBodyPart. else if (obj instanceof MimeBodyPart)... 8. Se l'oggetto BodyPart è di tipo MimeBodyPart, effettuare le seguenti azioni: a. Eseguire l'oggetto BodyPart come MimeBodyPart. MimeBodyPart mbp = (MimeBodyPart) obj; b. Se l'oggetto MimeBodyPart non contiene allegati, recuperare il testo del messaggio utilizzando l'oggetto MimeBodyPart come parametro. if (mbp.getcontenttype().indexof(contenttype.type_text_html_string)!= -1) reademailbody(mbp); c. Se l'oggetto MimeBodyPart contiene allegati, richiamare un metodo che recupera il testo del messaggio. else if (mbp.getcontenttype().equals(contenttype.type_multipart_mixed_string) mbp.getcontenttype().equals (ContentType.TYPE_MULTIPART_ALTERNATIVE_STRING)) findemailbody(mbp.getcontent()); 9. Se l'oggetto BodyPart è un allegato supportato da BlackBerry Attachment Service, modificare su true la relativa variabile locale. else if (obj instanceof SupportedAttachmentPart) _hassupportedattachment = true; 10. Se l'oggetto BodyPart è un allegato non supportato da BlackBerry Attachment Service, modificare su true la relativa variabile locale. else if (obj instanceof UnsupportedAttachmentPart) _hasunsupportedattachment = true; Esempio di codice: Recupero del contenuto di un messaggio e-mail 13

Recupero del testo di un messaggio e-mail private void findemailbody(object obj) //Reset the attachment flags. _hassupportedattachment = false; _hasunsupportedattachment = false; if(obj instanceof Multipart) Multipart mp = (Multipart)obj; for(int count=0; count < mp.getcount(); ++count) findemailbody(mp.getbodypart(count)); else if (obj instanceof TextBodyPart) TextBodyPart tbp = (TextBodyPart) obj; reademailbody(tbp); else if (obj instanceof MimeBodyPart) MimeBodyPart mbp = (MimeBodyPart)obj; if (mbp.getcontenttype().indexof(contenttype.type_text_html_string)!= -1) reademailbody(mbp); else if (mbp.getcontenttype().equals(contenttype.type_multipart_mixed_string) mbp.getcontenttype().equals(contenttype.type_multipart_alternative_string)) //The message has attachments or we are at the top level of the message. //Extract all of the parts within the MimeBodyPart message. findemailbody(mbp.getcontent()); else if (obj instanceof SupportedAttachmentPart) _hassupportedattachment = true; else if (obj instanceof UnsupportedAttachmentPart) _hasunsupportedattachment = true; Recupero del contenuto in testo normale di un messaggio e-mail Nella seguente attività, potrebbe essere restituita un'eccezione se si richiama il metodo Transport.more(). 14

Recupero del testo di un messaggio e-mail import net.rim.blackberry.api.mail.bodypart; import net.rim.blackberry.api.mail.textbodypart; import net.rim.blackberry.api.mail.transport; import net.rim.device.api.ui.component.dialog; 2. Creare un metodo con un oggetto TextBodyPart come parametro. void reademailbody(textbodypart tbp); 3. Eseguire il valore restituito da TextBodyPart.getContent() come String per recuperare la parte di testo normale del messaggio. _plaintextmessage = (String)tbp.getContent(); 4. Richiamare TextBodyPart.hasMore() e TextBodyPart.moreRequestSent() per determinare se sul server esistono altri dati dell'oggetto TextBodyPart. if (tbp.hasmore() &&!tbp.morerequestsent()) 5. Se per l'oggetto TextBodyPart sono disponibili altri dati, richiamare Transport.more() per recuperare il resto dell'oggetto TextBodyPart. Transport.more((BodyPart)tbp, true); Esempio di codice: Recupero del contenuto in testo normale di un messaggio e-mail private void reademailbody(textbodypart tbp) _plaintextmessage = (String)tbp.getContent(); if (tbp.hasmore() &&!tbp.morerequestsent()) try Transport.more((BodyPart)tbp, true); catch (Exception ex) Dialog.alert("Exception: " + ex.tostring()); Recupero del contenuto HTML di un messaggio e-mail Nella seguente attività, potrebbe essere restituita un'eccezione se si richiama il metodo Transport.more(). 15

Recupero del testo di un messaggio e-mail import net.rim.blackberry.api.mail.bodypart; import net.rim.blackberry.api.mail.mimebodypart; import net.rim.blackberry.api.mail.transport; import net.rim.device.api.ui.component.dialog; 2. Creare un metodo con un oggetto MimeBodyPart come parametro. void reademailbody(mimebodypart mbp) 3. Richiamare MimeBodyPart.getContent() e MimeBodyPart.getContentType() per recuperare il contenuto dell'oggetto MimeBodyPart. Object obj = mbp.getcontent(); String mimetype = mbp.getcontenttype(); 4. Creare una variabile String che contenga la rappresentazione String dell'oggetto MimeBodyPart. String body = null; 5. Se il dispositivo BlackBerry può convertire in formato String il testo HTML di un messaggio, l'oggetto MimeBodyPart sarà di tipo String. Eseguire l'oggetto MimeBodyPart come String e assegnarlo alla rappresentazione String della parte del testo del messaggio. if (obj instanceof String) body = (String)obj; 6. Se il dispositivo BlackBerry non può convertire in formato String il testo HTML di un messaggio, l'oggetto MimeBodyPart sarà un array di byte. Creare una nuova istanza di String utilizzando come parametro l'oggetto MimeBodyPart eseguito come array di byte. Assegnare l'oggetto String alla rappresentazione String della parte del testo del messaggio. else if (obj instanceof byte[]) body = new String((byte[])obj); 7. Verificare se la rappresentazione String del contenuto dell'oggetto MimeBodyPart contiene ContentType.TYPE_TEXT_PLAIN_STRING per determinare se l'oggetto MimeBodyPart è la parte del testo normale del messaggio. if (mimetype.indexof(contenttype.type_text_plain_string)!= -1) 8. Richiamare MimeBodyPart.hasMore() e MimeBodyPart.moreRequestSent() per determinare se tutta la parte del testo è presente nell'oggetto MimeBodyPart. if (mbp.hasmore() &&!mbp.morerequestsent()) 16

Recupero del testo di un messaggio e-mail 9. Se per l'oggetto MimeBodyPart sono disponibili altri dati, richiamare Transport.more() per recuperare il resto dei dati per l'oggetto MimeBodyPart. Transport.more((BodyPart)mbp, true); 10. Verificare se la rappresentazione String del contenuto dell'oggetto MimeBodyPart contiene ContentType.TYPE_TEXT_HTML_STRING per determinare se l'oggetto MimeBodyPart è la parte del testo HTML del messaggio. else if (mimetype.indexof(contenttype.type_text_html_string)!= -1) 11. Richiamare MimeBodyPart.hasMore() e MimeBodyPart.moreRequestSent() per determinare se tutta la parte del testo HTML è presente nell'oggetto MimeBodyPart. if (mbp.hasmore() &&!mbp.morerequestsent()) 12. Se per l'oggetto MimeBodyPart sono disponibili altri dati, richiamare Transport.more() per recuperare il resto dell'oggetto MimeBodyPart. Transport.more((BodyPart)mbp, true); Esempio di codice: Recupero del contenuto HTML di un messaggio e-mail private void reademailbody(mimebodypart mbp) //Extract the content of the message. Object obj = mbp.getcontent(); String mimetype = mbp.getcontenttype(); String body = null; if (obj instanceof String) body = (String)body; else if (obj instanceof byte[]) body = new String((byte[])obj); if (mimetype.indexof(contenttype.type_text_plain_string)!= -1) _plaintextmessage = body; //Determine if all of the text body part is present. if (mbp.hasmore() &&!mbp.morerequestsent()) try Transport.more((BodyPart)mbp, true); catch (Exception ex) Dialog.alert("Exception: " + ex.tostring()); 17

Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un messaggio e-mail else if (mimetype.indexof(contenttype.type_text_html_string)!= -1) _htmlmessage = body; //Determine if all of the HTML body part is present. if (mbp.hasmore() &&!mbp.morerequestsent()) try Transport.more((BodyPart)mbp, true); catch (Exception ex) Dialog.alert("Exception: " + ex.tostring()); Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un messaggio e-mail import net.rim.blackberry.api.mail.nosuchserviceexception; import net.rim.blackberry.api.mail.sendlistener; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.store; 2. Implementare l'interfaccia SendListener. public class MailSendListener implements SendListener... 3. Creare un'istanza della classe che implementa l'interfaccia SendListener. MailSendListener mailsl = new mailsendlistener(); 4. In un blocco try richiamare Session.waitForDefaultSession().getStore() per recuperare l'oggetto Store. try Store store = Session.waitForDefaultSession().getStore(); 5. In un blocco catch gestire un'eccezione NoSuchServiceException. 18

Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un MMS catch (NoSuchServiceException e) System.out.println(e.toString()); 6. Richiamare Store.addSendListener(MailSendListener) per aggiungere un'istanza di SendListener. store.addsendlistener(mailsl); Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un MMS import net.rim.blackberry.api.mms.sendlistener; import net.rim.blackberry.api.mms.mms; 2. Implementare l'interfaccia SendListener. public class MMSSendListener implements SendListener... 3. Creare un'istanza della classe che implementa l'interfaccia SendListener. MMSSendListener mmssl = new mmssendlistener(); 4. Aggiungere un'istanza di SendListener. MMS.addSendListener(mmsSL); Invio a un'applicazione del dispositivo BlackBerry di una notifica circa l'invio di un SMS import net.rim.blackberry.api.sms.sendlistener; import net.rim.blackberry.api.sms.sms; 2. Creare una classe che implementa l'interfaccia PhoneListener. public class smssendlistener implements SendListener... 3. Creare un'istanza della classe che implementa l'interfaccia SendListener. smssendlistener smssl = new smssendlistener(); 4. Aggiungere un SendListener. SMS.addSendListener(smsSL); 19

Invio di un messaggio Invio di un messaggio import net.rim.blackberry.api.mail.address; import net.rim.blackberry.api.mail.addressexception; import net.rim.blackberry.api.mail.folder; import net.rim.blackberry.api.mail.message; import net.rim.blackberry.api.mail.messagingexception; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.store; import net.rim.blackberry.api.mail.transport; 2. Dichiarare un oggetto Message. Message msg; 3. Specificare una cartella in cui salvare una copia del messaggio inviato. Store store = Session.getDefaultInstance().getStore(); Folder[] folders = store.list(folder.sent); Folder sentfolder = folders[0]; msg = new Message(sentfolder); 4. Creare una serie di oggetti Address. Address tolist[] = new Address[1]; 5. In un blocco try, aggiungere ogni indirizzo alla serie. try tolist[0]= new Address("ming.li@example.com", "Ming Li"); 6. In un blocco catch, gestire un'eccezione AddressException, restituita se un indirizzo non è valido. catch(addressexception e) System.out.println(e.toString()); 7. Richiamare Message.addRecipients() e fornire il tipo di destinatario (A, CC o CCN) e la serie di indirizzi da aggiungere come parametri al metodo. 8. Se il messaggio ha più tipi di destinatari, richiamare Message.addRecipients() una volta per ogni tipo di destinatario. msg.addrecipients(message.recipienttype.to, tolist); 9. Richiamare Message.setFrom(Address). Address from = new Address("ming.li@example.com", "Ming Li"); msg.setfrom(from); 20

Per rispondere a un messaggio 10. Richiamare Message.setSubject(String). msg.setsubject("test Message"); 11. Richiamare Message.setContent(String). In genere, l'applicazione del dispositivo BlackBerry recupera il contenuto dal testo digitato da un utente del dispositivo BlackBerry in un campo. try msg.setcontent("this is a test message."); catch(messagingexception e) System.out.println(e.getMessage()); 12. Richiamare Session.getTransport() e memorizzare l'oggetto restituito in una variabile di tipo Transport. L'oggetto Transport rappresenta il protocollo di trasporto per la messaggistica. Transport trans = Session.getTransport(); 13. Richiamare Transport.send(Message) per inviare il messaggio. try trans.send(msg); catch(messagingexception e) System.out.println(e.getMessage()); Per rispondere a un messaggio import net.rim.blackberry.api.mail.folder; import net.rim.blackberry.api.mail.message; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.store; import net.rim.blackberry.api.mail.transport; 2. Richiamare Session.getTransport() e memorizzare l'oggetto restituito in una variabile di tipo Transport. L'oggetto Transport rappresenta il protocollo di trasporto per la messaggistica. Transport trans = Session.getTransport(); 3. Richiamare Session.waitForDefaultSession().getStore() per recuperare l'oggetto Store. Store store = Session.waitForDefaultSession().getStore(); 21

Per inoltrare un messaggio 4. Richiamare Store.list(INBOX) recuperare tutte le cartelle nella cartella Postainarrivo. Memorizzare le cartelle in una serie Folder. Folder[] folders = store.list(inbox); 5. Specificare un elemento di serie per recuperare la cartella della posta in arrivo. Folder inbox = folders[0]; 6. Richiamare Folder.getMessages() per recuperare i messaggi nella cartella della posta in arrivo. Memorizzare i messaggi in una serie Message. Message[] messages = inbox.getmessages(); 7. Richiamare Message.reply(Boolean) e specificare true per rispondere a tutti i destinatari del messaggio oppure false per rispondere solo al mittente. if( messages.length > 0 ) Message msg = messages[0]; Message reply = msg.reply(true); 8. Richiamare Transport.send(Message) per inviare la risposta. try trans.send(reply); catch(messagingexception e) System.out.println(e.getMessage()); Per inoltrare un messaggio import net.rim.blackberry.api.mail.address; import net.rim.blackberry.api.mail.message; import net.rim.blackberry.api.mail.messagingexception; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.transport; 2. Richiamare Message.forward() su un oggetto Message esistente. La riga dell'oggetto di un messaggio inoltrato è impostata automaticamente su I:oggetto_originale. Message fwdmsg = msg.forward(); 3. Creare una serie di indirizzi. 22

Utilizzo delle cartelle dei messaggi Address tolist[] = new Address[1]; 4. Aggiungere un nuovo oggetto Address alla serie. tolist[0]= new Address("ming.li@example.com", "Ming Li"); 5. Richiamare Message.addRecipients(int, Address[]) per aggiungere destinatari all'oggetto Message. fwdmsg.addrecipients(message.recipienttype.to, tolist); 6. Richiamare Message.setContent(String) per impostare il contenuto del messaggio visualizzato prima del messaggio originale. try fwdmsg.setcontent("this is a forwarded message."); catch(messagingexception e) System.out.println(e.getMessage()); 7. Richiamare Session.getTransport() e memorizzare l'oggetto restituito in una variabile di tipo Transport. L'oggetto Transport rappresenta il protocollo di trasporto per la messaggistica. Transport trans = Session.getTransport(); 8. Richiamare Transport.send(Message). try trans.send(fwdmsg); catch(messagingexception e) System.out.println(e.getMessage()); Utilizzo delle cartelle dei messaggi import net.rim.blackberry.api.invoke.invoke; import net.rim.blackberry.api.invoke.messagearguments; import net.rim.blackberry.api.mail.folder; import net.rim.blackberry.api.mail.foldernotfoundexception; import net.rim.blackberry.api.mail.message; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.store; 2. Recuperare l'archivio. 23

Utilizzo delle cartelle dei messaggi Store store = Session.waitForDefaultSession().getStore(); 3. Effettuare una delle operazioni riportate di seguito: Attività Apertura della visualizzazione di una cartella Elenco delle cartelle in un archivio di cassette postali Recupero di una serie di cartelle per tipo Recupero di una serie di cartelle mediante una ricerca Procedura a. Recuperare un elenco di cartelle. Store store = null; store = Session.waitForDefaultSession().getStore(); Folder[] folders = store.list(); b. Richiamare Invoke.invokeApplication() per visualizzare una cartella dall'elenco. Invoke.invokeApplication (Invoke.APP_TYPE_MESSAGES, new MessageArguments( folders[0])); Richiamare Store.list(). Folder[] folders = store.list(); Richiamare Store.list(int) e fornire il tipo di cartella come parametro. Folder[] folders = store.list(inbox); Folder inbox = folders[0]; Richiamare Store.findFolder(String). Folder[] folders = store.findfolder("inbox"); Recupero di una cartella per nome a. Richiamare Store.getFolder(String) e fornire il percorso assoluto della cartella come parametro. Folder folder = store.getfolder("mailbox - Yan Wang/Inbox/ Projects"); b. Creare il codice per gestire un'eccezione FolderNotFoundException se la cartella non esiste. Recupero di una cartella per ID a. Richiamare Folder.getID() per recuperare l'id della cartella. b. Richiamare Store.getFolder() con l'id come parametro. Folder[] folders = store.list(); long id = folders[0].getid(); Folder f2 = store.getfolder(id); 24

Utilizzo delle cartelle dei messaggi Attività Per archiviare un messaggio Procedura Richiamare Folder.appendMessage(Message) su un oggetto Folder. Message msg = new Message(); // populate the message Folder folder = store.getfolder("inbox"); folder.appendmessage(msg); 25

Allegati Allegati 3 L'API della posta nel pacchetto net.rim.blackberry.api.mail consente di gestire gli allegati nei messaggi e-mail in entrata e di includere allegati nei messaggi e-mail in uscita su un dispositivo BlackBerry. Un allegato è rappresentato come oggetto BodyPart separato su un messaggio Multipart. Creazione di un handler degli allegati È possibile utilizzare l'interfaccia AttachmentHandler per gestire l'allegato di un messaggio e-mail presente nell'elenco dei messaggi sul dispositivo BlackBerry. Nota: BlackBerry Attachment Service riceve inizialmente tutti gli allegati. Gli handler degli allegati di terzi non possono cambiare questo comportamento predefinito. Per ulteriori informazioni su BlackBerry Attachment Service, consultare la Guida all'amministrazione di BlackBerry Enterprise Server. import net.rim.blackberry.api.mail.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.ui.component.*; 2. Implementare l'interfaccia AttachmentHandler per creare un handler degli allegati personalizzato. public class AttachTest implements AttachmentHandler... 3. Implementare il metodo supports(string) per specificare il tipo di contenuto dell'allegato supportato dall'handler. public boolean supports(string contenttype) return (contenttype.tolowercase().indexof("contenttype")!= -1? true : false); 4. Implementare il metodo menustring() per specificare il testo della voce di menu visualizzata quando un utente seleziona un allegato. public String menustring() return "Custom Attachment Viewer"; 5. Implementare il metodo run() per specificare cosa deve accadere quando un utente fa clic sulla voce di menu. Nel seguente esempio di codice, una nuova schermata utilizza la classe RichTextField per visualizzare una rappresentazione di tipo String del contenuto dell'allegato. public void run(message m, SupportedAttachmentPart p) MainScreen view = new MainScreen(); 26

Recupero dei contenuti di un allegato view.settitle("attachment Viewer"); view.add(new RichTextField(new String((byte[])p.getContent()))); 6. Richiamare AttachmentHandlerManager.addAttachmentHandler() per registrare l'handler degli allegati nel manager. Il nome dell'allegato deve avere come prefisso "x-rimdevice" affinché l'allegato possa essere inviato e memorizzato sul dispositivo BlackBerry. AttachmentHandlerManager m = AttachmentHandlerManager.getInstance(); CustomAttachmentHandler ah = new CustomAttachmentHandler(); m.addattachmenthandler(ah); Recupero dei contenuti di un allegato 1. Importare la classe net.rim.blackberry.api.mail.supportedattachmentpart. 2. Richiamare SupportedAttachmentPart.getContent(). String s = new String((byte[])p.getContent()); Recupero delle informazioni su un allegato 1. Importare la classe net.rim.blackberry.api.mail.supportedattachmentpart. 2. Richiamare i metodi della classe SupportedAttachmentPart. La classe SupportedAttachmentPart rappresenta un allegato con un visualizzatore corrispondente sul dispositivo BlackBerry. La classe UnsupportedAttachmentPart rappresenta un allegato che non ha un visualizzatore sul dispositivo BlackBerry. Invio di un messaggio con un allegato import net.rim.blackberry.api.mail.message; import net.rim.blackberry.api.mail.messagingexception; import net.rim.blackberry.api.mail.multipart; import net.rim.blackberry.api.mail.session; import net.rim.blackberry.api.mail.supportedattachmentpart; import net.rim.blackberry.api.mail.transport; 2. Creare un nuovo oggetto Multipart per creare un messaggio composto. byte[] data = new byte[256]; MultiPart multipart = new MultiPart(); 3. Creare un oggetto SupportedAttachmentPart, designando l'oggetto Multipart come padre, per creare ogni componente della schermata. 27

Per scaricare automaticamente gli allegati SupportedAttachmentPart attach = new SupportedAttachmentPart( multipart, "application/x-example", "filename", data); 4. Richiamare MultiPart.addBodyPart(SupportedAttachmentPart) per aggiungere ogni oggetto supportedattachmentpart all'oggetto composto. multipart.addbodypart(attach); 5. Richiamare Message.setContent(Multipart) e fornire come parametro l'oggetto Multipart per impostare il contenuto dell'allegato. msg.setcontent(multipart); 6. Richiamare Session.getTransport() e memorizzare l'oggetto restituito in una variabile di tipo Transport. L'oggetto Transport rappresenta il protocollo di trasporto per la messaggistica. Transport trans = Session.getTransport(); 7. Richiamare Transport.send(Message). try trans.send(msg); catch(messagingexception e) System.out.println(e.getMessage()); Per scaricare automaticamente gli allegati Quando l'applicazione dei messaggi del dispositivo BlackBerry riceve un messaggio con un allegato, è possibile scaricare automaticamente l'allegato e memorizzarlo sul dispositivo BlackBerry. Prima di scaricare gli allegati, la classe AttachmentDownloadManager convalida l'allegato. AttachmentDownloadManager restituisce delle eccezioni se si verifica una qualsiasi delle seguenti condizioni. L'applicazione tenta di richiamare il download mentre questo è già in corso. L'applicazione tenta di scaricare file di dimensioni pari a zero. La dimensione dell'allegato è superiore a quanto consentito dal criterio IT dell'applicazione o dai dati di configurazione. Gli allegati sono crittografati. Non è disponibile spazio sufficiente sul dispositivo BlackBerry o sulla scheda SD. Il metodo AttachmentDownloadManager.download() esegue la verifica durante il processo di download. Se vengono rilevati errori di verifica, il metodo restituisce un'eccezione. Per un elenco dei possibili errori di verifica, vedere la documentazione di riferimento sulle API per BlackBerry Java Development Environment. 28

Per scaricare automaticamente gli allegati Nota: BlackBerry Attachment Service riceve inizialmente tutti gli allegati. Gli handler degli allegati di terzi non possono cambiare questo comportamento predefinito. Per ulteriori informazioni su BlackBerry Attachment Service, consultare la Guida all'amministrazione di BlackBerry Enterprise Server. import java.io.ioexception; import net.rim.blackberry.api.mail.*; 2. Implementare l'interfaccia DownloadProgressListener. Creare un'istanza della classe AttachmentDownloadManager. public class AutoAttachTest implements DownloadProgressListener AttachmentDownloadManager _adm = new AttachmentDownloadManager(); 3. Utilizzare i metodi disponibili in AttachmentDownloadManager per determinare le informazioni sull'allegato. public String filesize = getfilesize(bodypart bodypart); public String filename = getfilename(bodypart bodypart); public String filetype = getfilecontenttype(bodypart bodypart); public String filepath = getdownloadedfilename(bodypart bodypart); 4. Richiamare AttachmentDownloadManager.download() per scaricare l'allegato. _adm.download(bodyparts, null, this); 5. Sovrascrivere i metodi di callback DownloadProgressListener per fornire aggiornamenti sullo stato di scaricamento dell'allegato. private void downloadcancelled(string msg) BodyPart bodypart = (BodyPart) element; _screen.displayprogress("failed to download " + _adm.getfilename(bodypart)); private void downloadcompleted(object element) BodyPart bodypart = (BodyPart) element; _screen.displayprogress(_adm.getfilename(bodypart) + " downloaded."); public void updateprogress(object element, int current, int total) 29

Calendario Calendario 4 Aprire il Calendario import net.rim.blackberry.api.invoke.calendararguments; import net.rim.blackberry.api.invoke.invoke; import net.rim.device.api.system.controlledaccessexception; 2. Richiamare Invoke.invokeApplication(APP_TYPE_CALENDAR, CalendarArguments). 3. Verificare la presenza di ControlledAccessException se l'applicazione non dispone dell'autorizzazione per accedere all'applicazione che richiama. Visualizzazione o modifica di una voce del calendario import java.util.enumeration; import javax.microedition.pim.pim; import javax.microedition.pim.event; import javax.microedition.pim.eventlist; import net.rim.blackberry.api.invoke.calendararguments; import net.rim.blackberry.api.invoke.invoke; import net.rim.device.api.system.controlledaccessexception; 2. Recuperare un oggetto Event dall'elenco di eventi. Event e = null; EventList el = (EventList)PIM.getInstance().openPIMList( PIM.EVENT_LIST, PIM.READ_WRITE ); Enumeration events = el.items(); e = (Event)events.nextElement(); 3. Richiamare Invoke.invokeApplication(APP_TYPE_CALENDAR, CalendarArguments) utilizzando l'oggetto CalendarArguments creato utilizzando il campo ARG_VIEW_DEFAULT e l'oggetto Event recuperato. Invoke.invokeApplication( Invoke.APP_TYPE_CALENDAR, new CalendarArguments ( CalendarArguments.ARG_VIEW_DEFAULT, e ) ); 4. Verificare la presenza di ControlledAccessException se l'applicazione non dispone dell'autorizzazione per accedere all'applicazione che richiama. 30

Apertura di una nuova voce del calendario compilata Apertura di una nuova voce del calendario compilata import javax.microedition.pim.pim; import javax.microedition.pim.event; import javax.microedition.pim.eventlist; import net.rim.blackberry.api.invoke.calendararguments; import net.rim.blackberry.api.invoke.invoke; import net.rim.device.api.system.controlledaccessexception; 2. Creare un nuovo oggetto Event utilizzando un oggetto EventList. EventList el = (EventList)PIM.getInstance().openPIMList( PIM.EVENT_LIST, PIM.READ_WRITE ); Event e = el.createevent(); 3. Aggiungere le informazioni all'oggetto Event. e.addstring( Event.SUMMARY, 0, "Go For A Walk" ); e.addstring( Event.LOCATION, 0, "The Park" ); long start = System.currentTimeMillis() + 8640000; e.adddate( Event.START, 0, start ); e.adddate( Event.END, 0, start + 72000000 ); 4. Richiamare Invoke.invokeApplication(APP_TYPE_CALENDAR, CalendarArguments) utilizzando l'oggetto CalendarArguments creato utilizzando il campo ARG_NEW e l'oggetto Event. Invoke.invokeApplication( Invoke.APP_TYPE_CALENDAR, new CalendarArguments ( CalendarArguments.ARG_NEW, e ) ); Aggiornamento delle informazioni delle voci di calendario import java.util.date; import javax.microedition.pim.event; import javax.microedition.pim.eventlist; import javax.microedition.pim.pim; import javax.microedition.pim.repeatrule; 2. Richiamare openpimlist() per aprire un elenco di voci del calendario. Fornire come parametri il tipo di elenco da aprire (PIM.EVENT_LIST) e la modalità in cui aprire l'elenco. READ_WRITE READ_ONLY WRITE_ONLY 31

Aggiornamento delle informazioni delle voci di calendario EventList eventlist = null; try eventlist = (EventList)PIM.getInstance().openPIMList(PIM.EVENT_LIST, PIM.READ_WRITE); catch (PimException e) // Handle exception. 3. Per aggiornare le informazioni del calendario, effettuare una qualsiasi delle seguenti attività: Attività Creazione di un appuntamento Aggiunta di informazioni sull'appuntamento Procedura Richiamare createevent () su un elenco di eventi. Event event = eventlist.createevent(); Richiamare Event.isSupportedField(int) per verificare che una voce supporta un campo. if (event.issupportedfield(event.summary)) event.addstring(event.summary, Event.ATTR_NONE, "Meet with customer"); if (event.issupportedfield(event.location)) event.addstring(event.location, Event.ATTR_NONE, "Conference Center"); Date start = new Date(System.currentTimeMillis() + 8640000); if (event.issupportedfield(event.start)) event.adddate(event.start, Event.ATTR_NONE, start); if (event.issupportedfield(event.end)) event.adddate(event.end, Event.ATTR_NONE, start + 72000000); if (event.issupportedfield(event.alarm)) if (event.countvalues(event.alarm) > 0) event.removevalue(event.alarm,0); event.setint(event.alarm, 0, Event.ATTR_NONE, 32

Aggiornamento delle informazioni delle voci di calendario Attività Creazione di un appuntamento ricorrente Procedura 396000); a. Creare un oggetto RepeatRule. La classe RepeatRule definisce i campi per le proprietà e i valori che si possono impostare, come COUNT, FREQUENCY e INTERVAL. b. Richiamare RepeatRule.getFields() per recuperare una serie di campi supportati. c. Richiamare RepeatRule.setInt(int, int) o RepeatRule.setDate (int, int, int, long) su un nuovo oggetto RepeatRule per definire una frequenza di ricorrenza. RepeatRule recurring = new RepeatRule(); recurring.setint(repeatrule.frequency, RepeatRule.MONTHLY); recurring.setint(repeatrule.day_in_month, 14); d. Richiamare Event.setRepeat(RepeatRule) su un evento per assegnare una frequenza di ricorrenza a un appuntamento. EventList eventlist = (EventList)PIM.getInstance().openPIMList (PIM.EVENT_LIST, PIM.READ_WRITE); Event event = eventlist.createevent(); event.setrepeat(recurring); Modifica delle informazioni di un appuntamento a. Richiamare il metodo appropriato, ad esempio setstring (), per sostituire un valore esistente con uno nuovo. b. Richiamare Event.countValues() per determinare se per il campo è già impostato un valore. c. Utilizzare il metodo corrispondente, ad esempio setstring (), per modificare un valore esistente. if (event.countvalues(event.location) > 0) event.setstring(event.location, 0, Event.ATTR_NONE, "Board Room"); 33

Recupero delle informazioni per le voci del calendario Attività Procedura Salvataggio di un appuntamento a. Prima di salvare l'appuntamento, richiamare Event.isModified() per identificare i campi di appuntamento che sono cambiati dall'ultimo salvataggio dell'appuntamento. b. Richiamare Event.commit(). if(event.ismodified()) event.commit(); Recupero delle informazioni per le voci del calendario javax.microedition.pim.event javax.microedition.pim.eventlist javax.microedition.pim.pim 2. Richiamare EventList.items() per recuperare una serie di appuntamenti. EventList eventlist = (EventList)PIM.getInstance().openPIMList(PIM.EVENT_LIST, PIM.READ_ONLY); Enumeration e = eventlist.items(); 3. Richiamare PIMItem.getFields() per recuperare una serie di ID di campi che contengono dati per un'attività specifica. Richiamare PIMItem.getString() per recuperare i valori del campo. while (e.hasmoreelements()) Event event = (Event)e.nextElement(); int[] fieldids = event.getfields(); int id; for(int index = 0; index < fieldids.length; ++index) id = fieldids[index]; if(e.getpimlist().getfielddatatype(id) == STRING) for(int j=0; j < event.countvalues(id); ++j) String value = event.getstring(id, j); System.out.println(event.getFieldLable(id) + "=" + value); 34