blackberry_java_application--790641-0622091431-005-5.0-es

77
BlackBerry Java Application Core Versión: 5.0 Guía de desarrollo

Upload: alberto-dosocho-santana

Post on 24-Jul-2015

92 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

BlackBerry Java ApplicationCoreVersión: 5.0

Guía de desarrollo

Page 2: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Publicado: 2010-06-30SWD-790641-0630123233-005

Page 3: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Contenido1 Administrar aplicaciones............................................................................................................................................................ 5

Administrador de aplicaciones...................................................................................................................................................... 5

Recuperar información acerca de una aplicación BlackBerry Java Application............................................................. 5

Comunicar con otra aplicación BlackBerry Java Application............................................................................................ 5

Determinar los servicios disponibles en una aplicación BlackBerry Java Application................................................... 6

Control de la aplicación.................................................................................................................................................................. 6

Solicitar acceso a los recursos.............................................................................................................................................. 6

Módulos de código.......................................................................................................................................................................... 7

Recuperar información del módulo...................................................................................................................................... 7

Acceder a los mensajes de control................................................................................................................................................ 7

Mostrar un mensaje para una operación que requiere permiso de usuario.................................................................... 7

Mostrar un mensaje de control de aplicaciones a un usuario........................................................................................... 8

2 Almacenar datos.......................................................................................................................................................................... 9

Administración de datos................................................................................................................................................................ 9

Acceso a la memoria....................................................................................................................................................................... 9

Sistemas y rutas de archivo........................................................................................................................................................... 9

API de conexiones de archivo........................................................................................................................................................ 10

Almacenamiento en medios extraíbles........................................................................................................................................ 10

Acceso a los datos en la tarjeta multimedia microSD........................................................................................................ 10

Uso de la tarjeta multimedia microSD con más de un dispositivo BlackBerry............................................................... 10

Cifrado de archivos en tarjetas microSD............................................................................................................................. 11

Políticas de TI y tarjetas multimedia microSD.................................................................................................................... 11

Cifrado de datos en una tarjeta multimedia microSD....................................................................................................... 11

Ejemplo de código: leer secciones de un archivo binario.......................................................................................................... 11

Almacenamiento de datos constantes......................................................................................................................................... 13

Crear un almacén de datos constantes............................................................................................................................... 13

Almacenar datos constantes................................................................................................................................................. 13

Recuperar datos constantes.................................................................................................................................................. 14

Eliminar datos constantes..................................................................................................................................................... 14

Almacenamiento de registros MIDP............................................................................................................................................. 15

Crear un almacén de registros MIDP................................................................................................................................... 15

Agregar un registro a un almacén de registros.................................................................................................................. 15

Recuperar un registro de un almacén de registros............................................................................................................ 15

Page 4: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Recuperar todos los registros de un almacén de registros................................................................................................ 15

Recopilaciones................................................................................................................................................................................. 16

Recuperar una recopilación de almacenamiento constante............................................................................................. 16

Crear un oyente de recopilación para notificar al sistema cuando cambia una recopilación....................................... 17

Eliminar un oyente de recopilación que notifica al sistema cuando cambia una recopilación..................................... 17

Notificar al sistema cuando cambia una recopilación....................................................................................................... 18

Almacenamiento de tiempo de ejecución.................................................................................................................................... 18

Recuperar el almacén de tiempo de ejecución................................................................................................................... 18

Agregar un objeto en el almacén de tiempo de ejecución................................................................................................ 19

Reemplazar un objeto en el almacén de tiempo de ejecución......................................................................................... 19

Recuperar un objeto de tiempo de ejecución registrado................................................................................................... 19

Recuperar un objeto de tiempo de ejecución no registrado............................................................................................. 20

3 Crear conexiones......................................................................................................................................................................... 21

Conexiones de red y tipos de transporte...................................................................................................................................... 21

Utilizar BlackBerry Enterprise Server como gateway de intranet..................................................................................... 21

Utilizar el gateway de Internet del proveedor de servicios inalámbricos........................................................................ 22

Recuperar el nombre de la red inalámbrica........................................................................................................................ 22

Conexiones...................................................................................................................................................................................... 22

Utilizar la autenticación HTTP.............................................................................................................................................. 22

Utilizar una conexión HTTPS................................................................................................................................................ 24

Utilizar una conexión de socket............................................................................................................................................ 25

Utilizar una conexión de datagramas.................................................................................................................................. 26

Utilizar una conexión de puerto USB o de puerto serie.................................................................................................... 28

Utilizar una conexión de puerto serie es una marca comercial de Bluetooth SIG......................................................... 29

Conexiones Wi-Fi............................................................................................................................................................................ 30

Familias de acceso inalámbrico............................................................................................................................................ 30

Recuperar las familias de acceso inalámbrico con las que es compatible un dispositivo BlackBerry.......................... 30

Determinar si un dispositivo BlackBerry es compatible con las distintas familias de acceso inalámbrico................. 31

Determinar los transmisores de la familia de acceso inalámbrico que están activados............................................... 31

Activar el transmisor para una familia de acceso inalámbrico......................................................................................... 31

Desactivar el transmisor para una familia de acceso inalámbrico................................................................................... 31

Comprobar si el transmisor Wi-Fi está activado................................................................................................................. 31

Comprobar si el transmisor Wi-Fi está conectado a un punto de acceso inalámbrico.................................................. 31

Recuperar el estado del punto de acceso inalámbrico o el perfil Wi-Fi activo............................................................... 32

Page 5: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Recuperar el nombre de la red inalámbrica........................................................................................................................ 32

Abrir una conexión de socket Wi-Fi...................................................................................................................................... 32

Abrir una conexión HTTP Wi-Fi............................................................................................................................................. 33

Abrir una conexión HTTPS Wi-Fi.......................................................................................................................................... 33

API de red mejorada....................................................................................................................................................................... 34

Ejemplo de código: mostrar los tipos de transporte disponibles...................................................................................... 34

Ejemplo de código: crear una conexión a través de HTTP utilizando el primer protocolo de transporte disponible

.................................................................................................................................................................................................. 35

4 Controlar el acceso a las API y a los datos de la aplicación................................................................................................. 38

Comprobar si es necesaria una firma de código......................................................................................................................... 38

API de BlackBerry con acceso controlado.................................................................................................................................... 38

Registrarse para utilizar API controladas..................................................................................................................................... 39

Restricciones de las firmas de código.......................................................................................................................................... 39

Solicitar una firma de código......................................................................................................................................................... 40

Registrar una clave de firma utilizando un servidor proxy......................................................................................................... 41

Firmar una aplicación mediante un servidor proxy..................................................................................................................... 41

Ver el estado de la firma de una aplicación................................................................................................................................. 41

Utilizar claves para proteger API y datos..................................................................................................................................... 42

Proteger API utilizando claves de firma de código..................................................................................................................... 42

Proteger datos del almacén de tiempo de ejecución utilizando claves de firma de código.................................................. 43

Proteger datos constantes utilizando claves de firma de código.............................................................................................. 43

5 Probar una aplicación del dispositivo BlackBerry.................................................................................................................. 45

Probar aplicaciones en BlackBerry Smartphone Simulator....................................................................................................... 45

Probar aplicaciones en un dispositivo BlackBerry....................................................................................................................... 45

Probar aplicaciones mediante archivos .cod compilados........................................................................................................... 45

Instalar y eliminar un archivo .cod para realizar pruebas.................................................................................................. 46

Guardar un archivo .cod que se encuentra en un dispositivo en un ordenador............................................................. 46

Recuperar información acerca de un archivo .cod............................................................................................................. 46

6 Empaquetar y distribuir una aplicación BlackBerry Java Application................................................................................. 48

Verificar previamente la aplicación del dispositivo BlackBerry................................................................................................. 48

Distribución de aplicaciones a través de la red inalámbrica..................................................................................................... 48

Extracción inalámbrica (iniciada por el usuario)......................................................................................................................... 48

Push inalámbrico (iniciado por el servidor)................................................................................................................................. 48

Page 6: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Distribuir aplicaciones BlackBerry Java Applications a través de la red inalámbrica............................................................. 49

Extraer archivos .cod "hermanos"........................................................................................................................................ 49

Modificar la información de un conjunto de aplicaciones MIDlet.................................................................................... 50

Propiedades de los archivos .jad de aplicaciones del dispositivo BlackBerry................................................................. 50

Corregir los tamaños de los archivos .cod indicados en un archivo .jad......................................................................... 51

Crear archivos .jad que hagan referencia a varios archivos .cod..................................................................................... 51

Distribuir aplicaciones del dispositivo BlackBerry con BlackBerry Desktop Software............................................................ 52

Elementos de un archivo .alx en una aplicación del dispositivo BlackBerry................................................................... 52

Distribución de aplicaciones a través de una conexión de ordenador..................................................................................... 57

Distribuir una aplicación desde un ordenador.................................................................................................................... 57

Distribuir una aplicación desde una página Web............................................................................................................... 58

Distribuir una aplicación para la prueba............................................................................................................................. 58

Distribuir una aplicación desde un ordenador............................................................................................................................ 58

Crear un archivo del Cargador de aplicaciones.......................................................................................................................... 58

Instalar una aplicación del dispositivo BlackBerry en un dispositivo específico..................................................................... 58

Especificar versiones compatibles de BlackBerry Device Software.......................................................................................... 59

Especificar una ubicación para su aplicación en un dispositivo BlackBerry............................................................................ 61

Especificar una ubicación para una aplicación en un dispositivo BlackBerry................................................................. 61

7 Localizar aplicaciones del dispositivo BlackBerry.................................................................................................................. 63

Compatibilidad de varios idiomas................................................................................................................................................. 63

Archivos necesarios para la localización...................................................................................................................................... 63

Administrar archivos de localización para un conjunto de aplicaciones del dispositivo BlackBerry.................................... 64

8 Autenticación personalizada del usuario................................................................................................................................. 66

9 Glosario......................................................................................................................................................................................... 67

10 Comentarios................................................................................................................................................................................. 70

11 Recursos relacionados................................................................................................................................................................ 71

12 Historial de revisión del documento......................................................................................................................................... 72

13 Aviso legal..................................................................................................................................................................................... 73

Page 7: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Administrar aplicaciones 1

Administrador de aplicacionesBlackBerry® Java® Virtual Machine en el dispositivo BlackBerry® incluye un administrador de aplicaciones que es el distribuidorcentral de los eventos del sistema operativo para otras aplicaciones del dispositivo BlackBerry.

La clase net.rim.device.api.system.ApplicationManager permite a las aplicaciones interactuar con eladministrador de aplicaciones para llevar a cabo las acciones siguientes:

• interactuar con procesos, por ejemplo, la recuperación de los ID de las aplicaciones en primer plano• publicar eventos globales en el sistema• ejecutar una aplicación inmediatamente o a una hora específica

Recuperar información acerca de una aplicación BlackBerry Java Application1. Importe las clases y las interfaces necesarias.

import net.rim.device.api.system.ApplicationManager;import net.rim.device.api.system.ApplicationDescriptor;import java.lang.String;import net.rim.device.api.system.*;

2. Para recuperar información acerca de los procesos que se ejecutan, invoqueApplicationManager.getVisibleApplications().

ApplicationManager manager = ApplicationManager.getApplicationManager();ApplicationDescriptor descriptors[] = manager.getVisibleApplications();

3. Para recuperar las descripciones de los objetos de las aplicaciones del dispositivo BlackBerry® que se están ejecutando,invoque ApplicationDescriptor.getName().

String appname1 = descriptors[0].getName();

4. Para recuperar una descripción de la aplicación actual, invoqueApplicationDescriptor.currentApplicationDescriptor().

ApplicationDescriptor descriptor = ApplicationDescriptor.currentApplicationDescriptor();

Comunicar con otra aplicación BlackBerry Java Application1. Importe la clase net.rim.device.api.system.ApplicationManager.

2. Para publicar un evento de nivel de sistema en otra aplicación del dispositivo BlackBerry®, invoque uno de los métodosApplicationManager.postGlobalEvent().

Guía de desarrollo Administrar aplicaciones

5

Page 8: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Determinar los servicios disponibles en una aplicación BlackBerry Java ApplicationEl libro de servicios contiene los registros de servicio. Cada registro de servicio define un servicio en un dispositivo BlackBerry®.Los registros de servicio definen el protocolo de comunicación (WAP o IPPP), el gateway de red y la información de configuración,por ejemplo, la configuración del explorador.

1. Importe la clase net.rim.device.api.servicebook.

2. Para permitir que la aplicación del dispositivo BlackBerry interactúe con BlackBerry® Infrastructure, utilice la API del librode servicios (net.rim.device.api.servicebook).

Control de la aplicaciónLas reglas de política de TI de control de BlackBerry® Application proporcionan a los administradores la capacidad de establecerlas características de una aplicación cuando se ejecuta en un dispositivo BlackBerry específico. Por ejemplo, los administradorespueden utilizar la regla de política de TI de control de BlackBerry Application para asegurarse de que un juego que existe en eldispositivo BlackBerry no puede acceder a la API del teléfono. La regla de política de TI de control de BlackBerry Applicationfunciona sólo cuando el dispositivo BlackBerry está conectado a BlackBerry® Enterprise Server. Esta política de TI no se aplicaa dispositivos BlackBerry que utilizan únicamente BlackBerry® Internet Service.

Si el administrador o un usuario deniega el acceso de la aplicación a una de las áreas protegidas, el método asociado muestrauna excepción ControlledAccessException. Para comprobaciones de nivel de clase, el método muestra una excepciónNoClassDefFoundError. Dependiendo de las APIS que utilice, su aplicación podría necesitar gestionar ambos tipos deerrores.

Solicitar acceso a los recursos1. Importe las clases y las interfaces necesarias.

import net.rim.device.api.applicationcontrol.ApplicationPermissions;import net.rim.device.api.applicationcontrol.ApplicationPermissionsManager;

2. Cree una instancia de la clase ApplicationPermissions.

ApplicationPermissions permissions = new ApplicationPermissions();

3. Especifique la solicitud de compilación para solicitar privilegios de inyección de eventos.

permissions.addPermission( ApplicationPermissions.PERMISSION_EVENT_INJECTOR );

4. Determine la configuración de control de acceso que el usuario del dispositivo BlackBerry® ha especificado.

if(ApplicationPermissionsManager.getInstance().invokePermissionsRequest(permissions)) { System.out.println("The user allowed requested permissions.");

Guía de desarrollo Control de la aplicación

6

Page 9: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

} else { System.out.println("The user denied requested permissions."); }

Módulos de código

Recuperar información del módulo1. Importe la clase net.rim.device.api.system.CodeModuleManager.

2. Para recuperar el identificador de un módulo, invoque getModuleHandle() y proporcione el nombre del módulo decódigo como parámetro.

int handle = CodeModuleManager.getModuleHandle("test_module");

3. Para recuperar información específica acerca de un módulo, invoque los métodos de la clase CodeModuleManager yproporcione el identificador del módulo como parámetro para estos métodos.

String name = CodeModuleManager.getModuleName( handle );String vendor = CodeModuleManager.getModuleVendor( handle );String description = CodeModuleManager.getModuleDescription( handle );int version = CodeModuleManager.getModuleVersion( handle );int size = CodeModuleManager.getModuleCodeSize( handle );int timestamp = CodeModuleManager.getModuleTimestamp( handle );

4. Para recuperar una matriz de identificadores de los módulos existentes en un dispositivo BlackBerry®, invoquegetModuleHandles().

int handles[] = CodeModuleManager.getModuleHandles();String name = CodeModuleManager.getModuleName( handles[0]);

Acceder a los mensajes de control

Mostrar un mensaje para una operación que requiere permiso de usuario

Puede utilizar los componentes del paquete net.rim.device.api.applicationcontrol para permitir a la aplicacióndel dispositivo BlackBerry® mostrar mensajes personalizados para un usuario del dispositivo BlackBerry cuando la aplicaciónintente realizar una operación que el usuario debe permitir. La aplicación muestra información acerca del tipo del permiso queel usuario debe proporcionar. Por ejemplo, puede utilizar PERMISSION_PHONE para una operación que requiera el acceso ala funcionalidad de teléfono del dispositivo.

Puede utilizar el paquete applicationcontrol para incluir un mensaje personalizado con el mensaje predeterminado queuna aplicación muestra en respuesta a un control de la aplicación.

Guía de desarrollo Módulos de código

7

Page 10: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Mostrar un mensaje de control de aplicaciones a un usuarioUna aplicación del dispositivo BlackBerry® puede incluir más de un valor ReasonProvider registrado. La aplicación muestralos mensajes de ReasonProviders en el orden en el cual cada valor ReasonProvider se registra con la aplicación. Porejemplo, si una aplicación registra un valor ReasonProvider A antes de un valor ReasonProvider B, la aplicación muestrael mensaje del valor ReasonProvider A, seguido del mensaje del valor ReasonProvider B.

1. Importe la interfaz net.rim.device.api. applicationcontrol.ReasonProvider.

2. En su implementación del método ReasonProvider.getMessage(int permissionID), devuelva un valorString que contenga el mensaje a mostrar al usuario.

Guía de desarrollo Acceder a los mensajes de control

8

Page 11: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Almacenar datos 2

Administración de datosPuede almacenar datos en la memoria constante en el dispositivo BlackBerry®. La API de almacenamiento constante deBlackBerry APIS y la API RMS de MIDP proporcionan compatibilidad con JSR 37 y JSR 118. Un dispositivo BlackBerry que ejecutaBlackBerry® Device Software versión 4.2 o posterior también ofrece un sistema de archivos tradicional y compatibilidad paraguardar el contenido directamente en el sistema de archivos mediante las API de JSR 75. Tanto con las API del almacén constantede BlackBerry como con las API RMS de MIDP, puede almacenar los datos de forma constante en la memoria flash. Los datospersisten incluso si retira la batería del dispositivo BlackBerry.

Un dispositivo BlackBerry que ejecute BlackBerry® Device Software versión 5.0 o posterior también es compatible con el uso deSQLite®. Debe utilizar las API de JSR 75 o SQLite para almacenar datos en una tarjeta multimedia.

Acceso a la memoriaEl entorno Java® de BlackBerry® se ha diseñado para evitar que las aplicaciones provoquen problemas de forma accidental omalintencionada en otras aplicaciones o en el dispositivo BlackBerry. Las aplicaciones del dispositivo BlackBerry pueden escribirsólo en la memoria del dispositivo BlackBerry que utiliza BlackBerry Java Virtual Machine; no pueden obtener acceso a la memoriavirtual ni al almacenamiento constante de otras aplicaciones (a menos que se les otorgue acceso específicamente para hacerlo).Las aplicaciones personalizadas sólo pueden acceder al almacenamiento o datos de usuarios constantes o bien comunicarse conotras aplicaciones a través de API específicas. Research In Motion debe firmar digitalmente las aplicaciones que utilicendeterminadas API de BlackBerry, con el fin de proporcionar un seguimiento de auditoría de las aplicaciones que utilizan APIconfidenciales.

Sistemas y rutas de archivoLos sistemas de archivos en un dispositivo BlackBerry® tienen sus correspondientes rutas de archivo que podrá utilizar paraacceder a los mismos.

Punto de montaje del sistema de

archivosRuta

flash interna file:///store/.

tarjeta multimedia file:///SDCard.

Guía de desarrollo Almacenar datos

9

Page 12: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

API de conexiones de archivoLa API de conexión de archivo ofrece un sistema de archivos tradicional y la compatibilidad para guardar los datos directamenteen el sistema de archivos en el dispositivo BlackBerry® o en una tarjeta microSD. Puede ver los datos en el sistema de archivosy mover los datos a un ordenador mediante Windows®.

Almacenamiento en medios extraíbles

Acceso a los datos en la tarjeta multimedia microSD

El paquete javax.microedition.io.file es compatible con las API de conexión de archivos JSR 75 y se utiliza enaplicaciones para obtener acceso al sistema de archivos para la tarjeta multimedia microSD. También puede implementar lainterfaz FileConnection para obtener acceso a tonos de llamada e imágenes de la cámara del dispositivo BlackBerry®.

Clase o interfaz Descripción

ConnectionClosedException Esta excepción se produce cuando una aplicación invoca un método en una

conexión de archivos cerrada.

FileConnection Una aplicación puede utilizar esta API para obtener acceso a los archivos o

directorios.

FileSystemListener Una aplicación puede utilizar esta API para recibir notificaciones de estado cuando

la aplicación agrega o elimina una raíz del sistema de archivos.

FileSystemRegistry Una aplicación puede utilizar esta API como registro central para detectores del

sistema de archivos que reciben la adición o eliminación de los sistemas de archivos.

IllegalModeException Esta excepción se produce cuando un método requiere un modo de seguridad

específico (por ejemplo, LECTURA o ESCRITURA) y la conexión abierta no se

encuentra en ese modo.

Uso de la tarjeta multimedia microSD con más de un dispositivo BlackBerry

Si el usuario del dispositivo BlackBerry® mueve la tarjeta multimedia microSD a un dispositivo BlackBerry que no utiliza unacontraseña de dispositivo o que utiliza una contraseña que no descifra correctamente la clave principal de la tarjeta multimediamicroSD, el dispositivo BlackBerry solicita al usuario del dispositivo BlackBerry que escriba la contraseña de la tarjeta multimediamicroSD. Si el dispositivo BlackBerry tiene una contraseña, el usuario del dispositivo BlackBerry puede utilizar el aviso paracambiar la contraseña de la tarjeta multimedia microSD a una contraseña del dispositivo BlackBerry.

Guía de desarrollo API de conexiones de archivo

10

Page 13: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Cifrado de archivos en tarjetas microSD

Políticas de TI y tarjetas multimedia microSD

Puede aplicar la política de TI Cifrar los datos escritos en la tarjeta multimedia microSD a cualquier archivo nuevo o modificadoque almacene en la tarjeta multimedia microSD. Sólo se cifrarán los archivos que almacene en la tarjeta multimedia microSDdespués de que un administrador establezca la política de TI. Se cifrará todo el contenido excepto los archivos multimedia.

Cifrado de datos en una tarjeta multimedia microSD

Si una aplicación BlackBerry® Java® Application obtiene acceso a un archivo en la tarjeta de memoria microSD, tiene lugar eldescifrado del archivo y el archivo se traslada a la memoria principal para que lo lea una aplicación. Para que una aplicaciónBlackBerry Java Application obtenga acceso al archivo protegido con contraseña, el dispositivo BlackBerry no debe bloquearse.Los archivos cifrados tienen una extensión .rem y no se pueden descifrar en plataformas que no sean de BlackBerry.

Si el NVRAM se elimina y la tarjeta multimedia microSD se bloquea con una clave de dispositivo BlackBerry, los datos de la tarjetamultimedia microSD ya no están accesibles. Para eliminar los datos que no sean accesibles, inicie el dispositivo BlackBerry yelimine todos los archivos multimedia cifrados.

El dispositivo BlackBerry utiliza una clave maestra almacenada en la tarjeta multimedia microSD para cifrar los archivosmultimedia del dispositivo BlackBerry. La clave maestra evita que el dispositivo BlackBerry tenga que descifrar o volver a cifrartodos los archivos multimedia cuando desactive el cifrado o cambie la contraseña.

Ejemplo de código: leer secciones de un archivo binarioEste ejemplo de código muestra cómo leer secciones de un archivo binario mediante la lectura de la información del encabezadodesde un archivo .gif. La aplicación lee el ancho y la altura de la imagen a partir del encabezado. Para ejecutar el ejemplo decódigo debe ubicar un archivo .gif en la carpeta raíz de una tarjeta multimedia en un dispositivo BlackBerry®.

import net.rim.device.api.ui.*;import net.rim.device.api.io.*;import javax.microedition.io.file.*;import javax.microedition.io.*;import java.io.*;import net.rim.device.api.ui.component.*;import net.rim.device.api.ui.container.*;public class RandomFileAccess extends UiApplication{ public static void main(String[] args) { RandomFileAccess app = new RandomFileAccess(); app.enterEventDispatcher();

Guía de desarrollo Ejemplo de código: leer secciones de un archivo binario

11

Page 14: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

} public RandomFileAccess() { pushScreen(new HomeScreen()); }}class HomeScreen extends MainScreen{ public HomeScreen() { setTitle("Random File Access Sample"); try { FileConnection fc = (FileConnection)Connector.open("file:///SDCard/test.gif"); boolean bFileExists = fc.exists(); if (!bFileExists) { Dialog.alert("Cannot find specified GIF file."); System.exit(0); } DataInputStream in = fc.openDataInputStream(); byte[] widthBytes = new byte[2]; byte[] heightBytes = new byte[2]; if ( in instanceof Seekable ) { ((Seekable) in).setPosition(6); in.read(widthBytes,0,2); ((Seekable) in).setPosition(8); in.read(heightBytes,0,2); } int widthPixels = widthBytes[0] + 256 * widthBytes[1]; int heightPixels = heightBytes[0] + 256 * heightBytes[1]; add(new LabelField("Width: " + widthPixels + "\nHeight: " + heightPixels)); in.close(); fc.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } }

Guía de desarrollo Ejemplo de código: leer secciones de un archivo binario

12

Page 15: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Almacenamiento de datos constantes

Crear un almacén de datos constantesCada uno de los objetos PersistentObject tiene una clave única extensa.

1. Importe las siguientes clases:• net.rim.device.api.system.PersistentObject• net.rim.device.api.system.PersistentStore• java.lang.String• net.rim.device.api.ui.component.Dialog

2. Para crear una clave única extensa, en BlackBerry® Integrated Development Environment, escriba un valor de cadena.

com.rim.samples.docs.userinfo

3. Haga clic con el botón derecho en la cadena y seleccione Convertir "com.rim.samples.docs.userinfo" a long.

4. Incluya un comentario en el código para indicar la cadena que ha utilizado para generar dicha clave única extensa.

5. Para crear un almacén de datos constantes, cree un único objeto estático PersistentObject e invoquePersistentStore.getPersistentObject, utilizando la clave única extensa como parámetro.

static PersistentObject store;static {store = PersistentStore.getPersistentObject( 0xa1a569278238dad2L );}

Almacenar datos constantes1. Importe las siguientes clases:

• net.rim.device.api.system.PersistentStore• net.rim.device.api.system.PersistentObject

2. Invoque setContents() en un PersistentObject. Este método sustituye el contenido existente por el contenidonuevo.

3. Para guardar el contenido nuevo en el almacén constante, invoque commit().

String[] userinfo = {username, password};synchronized(store) {store.setContents(userinfo); store.commit();}

Guía de desarrollo Almacenamiento de datos constantes

13

Page 16: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

4. Para utilizar una transacción de lote con el objeto de guardar objetos en el almacén constante, invoquePersistentStore.getSynchObject(). Este método recupera el objeto monitor del almacén constante que bloqueael objeto.

a. Realice la sincronización en el objeto.

b. Invoque commit() siempre que sea necesario. En el caso de que cualquiera de los objetos commit de los lotes generaraerror, la transacción del lote al completo será incorrecta.

5. Para guardar un objeto monitor independientemente de la transacción de lote, invoque forceCommit() al tiempo quesincroniza el objeto monitor.

Recuperar datos constantes1. Importe las siguientes clases:

• net.rim.device.api.system.PersistentObject• net.rim.device.api.ui.component.Dialog

2. Invoque getContents() en un objeto PersistentObject.

3. Para convertir el resultado al formato deseado, lleve a cabo una asignación explícita en el objeto que devuelvePersistentObject.getContents().

synchronized(store) {String[] currentinfo = (String[])store.getContents(); if(currentinfo == null) {Dialog.alert(_resources.getString(APP_ERROR));} else {currentusernamefield.setText(currentinfo[0]);currentpasswordfield.setText(currentinfo[1]);}}

Eliminar datos constantesSi elimina el archivo .cod que define un valor PersistentStore, todos los objetos constantes que ha creado el archivo .codse eliminarán a continuación.

1. Importe las siguientes clases:• net.rim.device.api.system.PersistentStore• net.rim.device.api.system.PersistentObject

2. Para eliminar todos los datos constantes de una aplicación del dispositivo BlackBerry®, invoquePersistentStore.destroyPersistentObject(), proporcionando como parámetro una clave única paraPersistentObject.

3. Para eliminar los datos individuales, considere los datos como objetos normales y elimine las referencias a los mismos. Laoperación de recopilación de datos desechables eliminará los datos.

Guía de desarrollo Almacenamiento de datos constantes

14

Page 17: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Almacenamiento de registros MIDP

Crear un almacén de registros MIDP1. Importe la clase javax.microedition.rms.RecordStore.

2. Invoque openRecordStore() y especifique true para indicar que el método debe crear el almacén de registros si ésteno existe.

RecordStore store = RecordStore.openRecordStore("Contacts", true);

Agregar un registro a un almacén de registros1. Importe la clase javax.microedition.rms.RecordStore.

2. Invoque addRecord().

int id = store.addRecord(_data.getBytes(), 0, _data.length());

Recuperar un registro de un almacén de registros1. Importe las siguientes clases:

• javax.microedition.rms.RecordStore• java.lang.String

2. Invoque getRecord(int, byte[], int). Pase los parámetros siguientes:• un ID de registro• una matriz de bytes• una compensación

byte[] data = new byte[store.getRecordSize(id)];store.getRecord(id, data, 0);String dataString = new String(data);

Recuperar todos los registros de un almacén de registros1. Importe la clase javax.microedition.rms.RecordStore.

2. Importe las siguientes interfaces:• javax.microedition.rms.RecordEnumeration• javax.microedition.rms.RecordFilter• javax.microedition.rms.RecordComparator

3. Invoque openRecordStore().

Guía de desarrollo Almacenamiento de registros MIDP

15

Page 18: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

4. Invoque enumerateRecords(). Pase los parámetros siguientes:• filter: especifica un objeto RecordFilter para recuperar un subconjunto de registros del almacén de registros

(si el valor es null, el método devuelve todos los registros)• comparator: especifica un objeto RecordComparator para determinar el orden en el que el método devuelve los

registros (si el valor es null, el método devuelve los registros en cualquier orden)• keepUpdated: determina si el método mantiene la enumeración actual con los cambios en el almacén de registros

RecordStore store = RecordStore.openRecordStore("Contacts", false);RecordEnumeration e = store.enumerateRecords(null, null, false);

Recopilaciones

Recuperar una recopilación de almacenamiento constante1. Importe las siguientes clases:

• net.rim.device.api.system.PersistentStore• java.util.Vector

2. Importe la interfaz net.rim.device.api.synchronization.SyncCollection.

3. Para proporcionar acceso a la aplicación del dispositivo BlackBerry® a los datos más recientes de SyncCollection enel PersistentStore, invoque el método PersistentStore.getPersistentObject() utilizando el ID deSyncCollection.

private PersistentObject _persist; private Vector _contacts; private static final long PERSISTENT_KEY = 0x266babf899b20b56L;_persist = PersistentStore.getPersistentObject( PERSISTENT_KEY );

4. Almacene los datos devueltos en un objeto vector.

_contacts = (Vector)_persist.getContents();

5. Cree un método para proporcionar a la aplicación del dispositivo BlackBerry los datos más recientes deSyncCollection antes de que comience una sesión de copia de seguridad inalámbrica de los datos.

public void beginTransaction(){_persist = PersistentStore.getPersistentObject(PERSISTENT_KEY); _contacts = (Vector)_persist.getContents();}

6. Cree código que deberá utilizar cuando el SyncCollection que ha recuperado del PersistentStore esté vacío.

if( _contacts == null ){_contacts = new Vector();

Guía de desarrollo Recopilaciones

16

Page 19: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

_persist.setContents( _contacts );_persist.commit();}

Crear un oyente de recopilación para notificar al sistema cuando cambia una recopilaciónEl sistema invoca CollectionEventSource.addCollectionListener() para crear un valorCollectionListener para cada SyncCollection que la aplicación del dispositivo BlackBerry® pone a disposición dela copia de seguridad inalámbrica.

1. Importe la clase net.rim.device.api.util.ListenerUtilities.

2. Importe las siguientes interfaces:• java.util.Vector• net.rim.device.api.collection.CollectionEventSource• net.rim.device.api.collection.CollectionListener• net.rim.device.api.synchronization.SyncCollection

3. Cree un objeto Vector privado para almacenar la recopilación de oyentes de SyncCollection para la aplicación deldispositivo BlackBerry.

private Vector _listeners; _listeners = new CloneableVector();

4. Implemente el método CollectionEventSource.addCollectionListener(), asegurándose de que el métodoagrega un valor CollectionListener al Vector que contiene los oyentes. En el siguiente código de ejemplo, hemosimplementado CollectionEventSource.addCollectionListener() para invocarListenerUtilities.fastAddListener() con el fin de agregar un oyente al Vector que contiene los oyentes.

public void addCollectionListener(Object listener){_listeners = ListenerUtilities.fastAddListener( _listeners, listener );}

Eliminar un oyente de recopilación que notifica al sistema cuando cambia una recopilaciónUna vez el valor CollectionListener no es necesario, el sistema invocaCollectionEventSource.removeCollectionListener.

1. Importe las siguientes clases:• net.rim.device.api.util.ListenerUtilities• java.util.Vector

2. Importe las siguientes interfaces:• net.rim.device.api.collection.CollectionEventSource• net.rim.device.api.collection.CollectionListener

3. Implemente las siguientes interfaces:

Guía de desarrollo Recopilaciones

17

Page 20: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

• net.rim.device.api.collection.CollectionEventSource• net.rim.device.api.collection.CollectionListener

4. Implemente el método CollectionEventSource.removeCollectionListener() utilizando el métodoListenerUtilities.removeListener() para eliminar el valor CollectionListener del Vector quecontiene oyentes SyncCollection para la aplicación del dispositivo BlackBerry®. En el siguiente código de ejemplo,hemos implementado CollectionEventSource.removeCollectionListener() para invocarListenerUtilities.removeListener() con el fin de eliminar un oyente del Vector que contiene oyentes.

public void removeCollectionListener(Object listener){_listeners = ListenerUtilities.removeListener( _listeners, listener );}

Notificar al sistema cuando cambia una recopilación1. Importe la interfaz net.rim.device.api.collection.CollectionListener.

2. Para notificar al sistema cuando se agrega un elemento a un valor SyncCollection, invoqueCollectionListener.elementAdded().

for( int i=0; i<_listeners.size(); i++ ){CollectionListener cl = (CollectionListener)_listeners.elementAt( i );cl.elementAdded( this, object );}return true;}

3. Para notificar al sistema cuando se reemplaza un elemento en un valor SyncCollection, invoqueCollectionListener.elementUpdated().

4. Invoque CollectionListener.elementRemoved().

Almacenamiento de tiempo de ejecuciónLos dispositivos BlackBerry® utilizan un almacén de tiempo de ejecución como ubicación central en el cual las aplicacionesBlackBerry Java® Applications pueden compartir objetos de tiempo de ejecución. De forma predeterminada, las aplicacionesBlackBerry Java Applications que Research In Motion firma digitalmente pueden acceder a los datos del almacén de tiempo deejecución. Póngase en contacto con RIM para obtener información acerca de cómo controlar el acceso a sus datos.

El almacén de tiempo de ejecución no es constante. Al reiniciar el dispositivo BlackBerry, los datos del almacén de tiempo deejecución se borran.

Recuperar el almacén de tiempo de ejecución1. Importe la clase net.rim.device.api.system.RuntimeStore.

Guía de desarrollo Almacenamiento de tiempo de ejecución

18

Page 21: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

2. Invoque RuntimeStore.getRuntimeStore().

RuntimeStore store = RuntimeStore.getRuntimeStore();

Agregar un objeto en el almacén de tiempo de ejecución1. Importe las siguientes clases:

• net.rim.device.api.system.RuntimeStore• java.lang.String• java.lang.IllegalArgumentException

2. Invoque RuntimeStore.put(long, String) y proporcione como parámetros un ID único extenso y el objeto detiempo de ejecución que se va a almacenar.

3. Cree un bloque try-catch para administrar el valor IllegalArgumentException que emite put() si existe un objetode tiempo de ejecución con el mismo ID.

RuntimeStore store = RuntimeStore.getRuntimeStore();String msg = "Some shared text";long ID = 0x60ac754bc0867248L;try {store.put( ID, msg );} catch(IllegalArgumentException e) {}

Reemplazar un objeto en el almacén de tiempo de ejecución1. Importe las siguientes clases:

• net.rim.device.api.system.RuntimeStore• java.lang.String• net.rim.device.api.system.ControlledAccessException

2. Invoque replace().

3. Cree un bloque try - catch para administrar el valor ControlledAccessException que emite replace() en el casode que el objeto de tiempo de ejecución con el ID especificado no exista.

RuntimeStore store = RuntimeStore.getRuntimeStore();String newmsg = "Some new text";try {Object obj = store.replace( 0x60ac754bc0867248L, newmsg);} catch(ControlledAccessException e) {} not exist

Recuperar un objeto de tiempo de ejecución registrado1. Importe las siguientes clases:

Guía de desarrollo Almacenamiento de tiempo de ejecución

19

Page 22: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

• net.rim.device.api.system.RuntimeStore• net.rim.device.api.system.ControlledAccessException

2. Invoque RuntimeStore.get() y proporcione como parámetro el ID del objeto de tiempo de ejecución.

3. Cree un bloque try - catch para administrar el valor ControlledAccessException que emite get() si BlackBerry®Java® Application no tiene acceso de lectura al objeto de tiempo de ejecución especificado.

RuntimeStore store = RuntimeStore.getRuntimeStore();try {Object obj = store.get(0x60ac754bc0867248L);} catch(ControlledAccessException e) {}

Recuperar un objeto de tiempo de ejecución no registrado1. Importe las siguientes clases:

• net.rim.device.api.system.RuntimeStore• net.rim.device.api.system.ControlledAccessException• java.lang.RuntimeException

2. Invoque RuntimeStore.waitFor() para esperar a que se produzca el registro de un objeto de tiempo de ejecución.

3. Cree código para gestionar las excepciones.

RuntimeStore store = RuntimeStore.getRuntimeStore();try {Object obj = store.waitFor(0x60ac754bc0867248L);} catch(ControlledAccessException e) {} catch(RuntimeException e) {}

Guía de desarrollo Almacenamiento de tiempo de ejecución

20

Page 23: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Crear conexiones 3

Conexiones de red y tipos de transporteUn dispositivo BlackBerry® puede utilizar distintas tecnologías de comunicaciones de radio como la tecnología Wi-Fi®, CDMAo GPRS para abrir una conexión inalámbrica. La conexión inalámbrica se transfiere a una red con cable y se conecta a una intraneto a Internet a través de un proxy o gateway. Un dispositivo BlackBerry puede funcionar con distintos tipos de gateways y cadagateway proporciona un conjunto único de características configurables. Puede especificar el tipo de conexión inalámbrica y elgateway a utilizar.

Los dispositivos BlackBerry que ejecutan BlackBerry® Device Software 5.0 o posterior incluyen una API de red diseñada parasimplificar el proceso de apertura de conexiones de red y la comprobación de la disponibilidad y área de cobertura inalámbricade los tipos de transporte. Puede abrir conexiones de red HTTP, HTTPS y de socket especificando una URL y una lista opcionalde tipos de transporte preferidos. Si especifica una lista de tipos de transporte, la API de red comprueba la disponibilidad y elárea de cobertura inalámbrica de cada de tipo transporte, en el orden especificado e intenta abrir una conexión. Este procesocontinúa hasta que se abre una conexión de red o hasta alcanzar el final de la lista. Si no especifica un tipo transporte, se probarántodos los tipos de transporte disponibles.

Gran parte de la funcionalidad de la API de red se ha implementado en las clases ConnectionFactory yTransportInfo. Puede utilizar los métodos proporcionados en la clase TransportInfo para buscar tipos de transportedisponibles y las áreas de cobertura inalámbrica asociadas. Puede utilizar la clase ConnectionFactory para solicitar unaconexión de red. Todas las clases de la API de red se proporcionan en los paquetes net.rim.device.api.io.transport ynet.rim.device.api.io.transport.options.

Utilizar BlackBerry Enterprise Server como gateway de intranet

Los clientes de empresa alojan BlackBerry® Enterprise Server tras el firewall de la empresa con el fin de activar el acceso desdelos dispositivos BlackBerry a la intranet de la empresa. El componente BlackBerry® Mobile Data System de BlackBerry EnterpriseServer incluye BlackBerry® MDS Services, que proporciona un servicio de proxy HTTP y TCP/IP para permitir que las aplicacionesJava® de terceros lo utilicen como gateway seguro para administrar conexiones HTTP y TCP/IP a la intranet. Si utiliza BlackBerryEnterprise Server como gateway de intranet, todo el tráfico entre la aplicación y BlackBerry Enterprise Server se cifraautomáticamente utilizando el cifrado AES o Triple DES. Puesto que BlackBerry Enterprise Server se encuentra tras el firewall dela empresa y ofrece un cifrado de datos inherente, las aplicaciones se pueden comunicar con servidores de la aplicación y conservidores Web que se ubican en la intranet de la empresa.

Si la aplicación se conecta a Internet y no a la intranet de la empresa, podría utilizar el servidor BlackBerry Enterprise Server quepertenece al cliente como gateway. En este caso, las solicitudes de red viajan tras el firewall de la empresa hacia BlackBerryEnterprise Server, que realiza la solicitud de red a Internet a través del firewall de la empresa. No obstante, los clientes de redpueden establecer una política de TI para imponer que BlackBerry Enterprise Server sea el gateway para todo el tráfico de redinalámbrica, incluido el tráfico destinado a Internet.

Guía de desarrollo Crear conexiones

21

Page 24: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Si la aplicación se conecta a Internet, y su objetivo son clientes no pertenecientes a una empresa, podrá utilizar BlackBerry®Internet Service o el gateway de Internet del proveedor del servidor inalámbrico para administrar las conexiones.

Utilizar el gateway de Internet del proveedor de servicios inalámbricos

Las aplicaciones Java® para dispositivos BlackBerry® se pueden conectar a Internet utilizando el gateway de Internet queproporciona el proveedor de servicios inalámbricos. Muchos proveedores de servicios inalámbricos facilitan sus propios gatewaysa Internet que ofrecen conectividad TCP/IP directa a Internet. Algunos operadores también proporcionan un gateway WAP quepermite que las conexiones HTTP se produzcan mediante el protocolo WAP. Las aplicaciones Java para dispositivos BlackBerrypueden utilizar cualquiera de estos gateways para establecer conexiones a Internet. Si la aplicación es para usuarios de dispositivosBlackBerry que se encuentran en una red inalámbrica específica, es muy probable que esta solución dé buenos resultados. Noobstante, si la aplicación es para usuarios de dispositivos BlackBerry en varias redes inalámbricas, probar la aplicación en losdistintos gateways de Internet y lograr una experiencia constante y segura puede suponer un reto. En estos casos, puede que lesea útil el uso de BlackBerry® Internet Service y del gateway de Internet del proveedor de servicios inalámbricos como tipo deconexión predeterminada si BlackBerry Internet Service no está disponible.

Recuperar el nombre de la red inalámbrica1. Importe las siguientes clases:

• net.rim.device.api.system.RadioInfo• java.lang.String• net.rim.device.api.ui.Field

2. Invoque RadioInfo.getCurrentNetworkName(). El dispositivo BlackBerry® debe estar conectado a una redinalámbrica para que este método funcione.

String networkName = RadioInfo.getCurrentNetworkName();System.out.println (“Network Name: “ + networkName );

Conexiones

Utilizar la autenticación HTTP1. Importe las siguientes clases:

• net.rim.device.api.system.CoverageInfo• javax.microedition.io.Connector• net.rim.device.api.ui.UiApplication• net.rim.device.api.ui.component.Dialog• java.lang.String

Guía de desarrollo Conexiones

22

Page 25: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

2. Importe las siguientes interfaces:• javax.microedition.io.HttpConnection• net.rim.device.api.system.CoverageStatusListener• javax.microedition.io.StreamConnection

3. Utilice la clase CoverageInfo y la interfaz CoverageStatusListener del paquetenet.rim.device.api.system para comprobar que el dispositivo BlackBerry se encuentra en el área de cobertura dered inalámbrica.

4. Invoque Connector.open() mediante la ubicación HTTP del recurso protegido.

5. Asigne y almacene el objeto devuelto como un valor StreamConnection.

StreamConnection s = (StreamConnection)Connector.open("http://mysite.com/myProtectedFile.txt");

6. Asigne y almacene el objeto StreamConnection como un objeto HTTPConnection.

HttpConnection httpConn = (HttpConnection)s;

7. Invoque HttpConnection.getResponseCode().

int status = httpConn.getResponseCode();

8. Cree código para administrar un intento de conexión HTTP no autorizado.

int status = httpConn.getResponseCode();switch (status)case (HttpConnection.HTTP_UNAUTHORIZED);

9. Cree un valor run()method y dentro de él implemente un objeto dialog para solicitar al usuario del dispositivoBlackBerry la información de inicio de sesión.

UiApplication.getUiApplication().invokeAndWait(new Runnable()){public void run(){dialogResponse = Dialog.ask;(Dialog.D_YES_NO,"Unauthorized Access:\n Do you wish to log in?");}}

10. Para procesar la información de inicio de sesión, cree código para administrar una respuesta de cuadro de diálogo Sí.

a. Recupere la información de inicio de sesión y cierre la conexión actual.

if (dialogResponse == Dialog.YES){String login = "username:password";//Close the connection.s.close();

b. Codifique la información de inicio de sesión.

Guía de desarrollo Conexiones

23

Page 26: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

byte[] encoded = Base64OutputStream.encode(login.getBytes(),0, login.length(), false, false);

11. Invoque HTTPConnection.setRequestProperty() utilizando la información de inicio de sesión codificada paraacceder al recurso protegido.

s = (StreamConnection)Connector.open("http://mysite.com/myProtectedFile.txt ");httpConn = (HttpConnection)s;httpConn.setRequestProperty("Authorization", "Basic " + new String(encoded));

Utilizar una conexión HTTPS

Si el dispositivo BlackBerry está asociado a un servidor BlackBerry® Enterprise Server y utiliza un servidor proxy HTTPS querequiere autenticación, no podrá utilizar una conexión TLS integral.

1. Importe las siguientes clases:• net.rim.device.api.system.CoverageInfo• javax.microedition.io.Connector

2. Importe las siguientes interfaces:• net.rim.device.api.system.CoverageStatusListener• javax.microedition.io.HttpsConnection

3. Utilice la clase CoverageInfo y la interfaz CoverageStatusListener del paquetenet.rim.device.api.system para asegurarse de que el dispositivo BlackBerry se encuentra en el área de coberturade red inalámbrica.

4. Invoque Connector.open(), especificando HTTPS como el protocolo y asigne el objeto devuelto como un objetoHttpsConnection para abrir una conexión HTTP.

HttpsConnection stream = (HttpsConnection)Connector.open("https://host:443/");

5. Para especificar el modo de la conexión, agregue uno de los parámetros siguientes a la cadena de conexión que pasa aConnector.open()• Especifique que debe utilizarse una conexión HTTPS integral desde el dispositivo BlackBerry al servidor de destino:

EndToEndRequired.• Especifique que debería utilizarse una conexión HTTPS integral desde el dispositivo BlackBerry al servidor de destino.

Si el dispositivo BlackBerry no es compatible con una conexión TLS integral y el usuario del dispositivo BlackBerry permiteconexiones proxy TLS, se utilizará una conexión proxy: EndToEndDesired.

HttpsConnection stream = (HttpsConnection)Connector.open("https://host:443/;EndToEndDesired");

Guía de desarrollo Conexiones

24

Page 27: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Utilizar una conexión de socketAunque es posible implementar HTTP a través de una conexión de socket, debe utilizar una conexión HTTP por las razonessiguientes:• Las conexiones de socket no son compatibles con características de BlackBerry® Mobile Data System, como push.• Las aplicaciones del dispositivo BlackBerry® que utilizan conexiones de socket requieren normalmente y de forma

significativa más ancho de banda que las aplicaciones del dispositivo BlackBerry que utiliza conexiones HTTP.

1. Importe las siguientes clases:• net.rim.device.api.system.CoverageInfo• javax.microedition.io.Connector• java.lang.String• java.io.OutputStreamWriter• java.io.InputStreamReader

2. Importe las siguientes interfaces:• net.rim.device.api.system.CoverageStatusListener• javax.microedition.io.StreamConnection

3. Utilice la clase CoverageInfo y la interfaz CoverageStatusListener del paquetenet.rim.device.api.system para asegurarse de que el dispositivo BlackBerry se encuentra en el área de coberturade red inalámbrica.

4. Invoque Connector.open(), especificando socket como protocolo y agregando deviceside=false como parámetro alfinal de la URL.

• Para abrir una conexión de socket a través de BlackBerry MDS Services, agregue deviceside=false al final dela URL. Las aplicaciones del dispositivo BlackBerry deben introducir explícitamente la IP local del equipo, ya quelocalhost no es compatible.

private static String URL = "socket://local_machine_IP:4444;deviceside=false";StreamConnection conn = null; conn = (StreamConnection)Connector.open(URL);

• Para abrir una conexión de socket sobre TCP directo, agregue el parámetro deviceside=true al final de la URL.

private static String URL = "socket://local_machine_IP:4444;deviceside=true";StreamConnection conn = null;conn = (StreamConnection)Connector.open(URL);

• Para abrir una conexión de socket a través de TCP directo, especificando la información de APN, agreguedeviceside=true como parámetro al final de la URL y especifique el APN a través del cual se realizará la conexión.Especifique el nombre de usuario para conectarse al APN, así como la contraseña si lo solicita el APN.

private static String URL = "socket://local_machine_IP:4444;deviceside=true;apn=internet.com;tunnelauthusername =user165;tunnelauthpassword=user165password";StreamConnection conn = null;conn = (StreamConnection)Connector.open(URL);

Guía de desarrollo Conexiones

25

Page 28: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

5. Utilice openInputStream() y openOutputStream() para enviar y recibir datos.

OutputStreamWriter _out = new OutputStreamWriter(conn.openOutputStream());String data = "This is a test";int length = data.length();_out.write(data, 0, length);InputStreamReader _in = new InputStreamReader(conn.openInputStream());char[] input = new char[length];for ( int i = 0; i < length; ++i ) {input[i] = (char)_in.read();};

6. Invoque close() en los flujos de entrada y salida y la conexión de socket. Cada uno de los métodos close() emite unvalor IOException. Asegúrese de que la aplicación del dispositivo BlackBerry implementa la gestión de excepciones.

_in.close();_out.close();conn.close();

Utilizar una conexión de datagramasLos datagramas son paquetes independientes de datos que las aplicaciones envían a través de las redes. Un objetoDatagram envuelve la matriz de bytes que es la carga del datagrama. Utilice una conexión de datagramas para enviar y recibirdatagramas.

Para utilizar una conexión de datagramas debe disponer de su propia infraestructura para conectarse a la red inalámbrica, incluidoun APN para redes GPRS. El uso de conexiones UDP requiere una colaboración estrecha con los proveedores de servicios.Compruebe que su proveedor de servicios admite conexiones UDP.

1. Importe las siguientes clases e interfaces:• net.rim.device.api.system.CoverageInfo• javax.microedition.io.Connector• java.lang.String

2. Importe las siguientes interfaces:• net.rim.device.api.system.CoverageStatusListener• javax.microedition.io.DatagramConnection• javax.microedition.io.Datagram

3. Utilice la clase CoverageInfo y la interfaz CoverageStatusListener del paquetenet.rim.device.api.system para asegurarse de que el dispositivo BlackBerry se encuentra en el área de coberturade red inalámbrica.

4. Invoque Connector.open(), especificando UDP como el protocolo y asigne el objeto devuelto como un objetoDatagramConnection para abrir una conexión de datagramas.

(DatagramConnection)Connector.open("udp://host:dest_port[;src_port]/apn");

Guía de desarrollo Conexiones

26

Page 29: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

donde:

• host es la dirección de host en formato decimal ASCII con puntos.• dest-port es el puerto de destino en la dirección de host (opcional para recibir mensajes).• src-port es el puerto de origen local (opcional).• apn es el APN de red en formato de cadena.

5. Para recibir datagramas de todos los puertos en el host especificado, omita el puerto de destino en la cadena de conexión.

6. Para abrir una conexión de datagramas en una red que no sea GPRS, especifique el número de puerto de origen, incluyendola barra oblicua final, la dirección para una conexión de red CDMA sería udp://121.0.0.0:2332;6343/. Puede enviar y recibirdatagramas en el mismo puerto.

7. Para crear un datagrama, invoque DatagramConnection.newDatagram().

Datagram outDatagram = conn.newDatagram(buf, buf.length);

8. Para agregar los datos a un diagrama, invoque Datagram.setData().

byte[] buf = new byte[256];outDatagram.setData(buf, buf.length);

9. Para enviar datos en la conexión de datagramas, invoque send() en la conexión de datagramas.

conn.send(outDatagram);

Si las aplicaciones BlackBerry®Java® Applications intentan enviar un datagrama en una conexión de datagramas y eldestinatario no escucha en el puerto de origen especificado, se emite un valor IOException. Asegúrese de que laaplicación BlackBerry Java Application implementa la gestión de excepciones.

10. Para recibir datos en la conexión de datagramas, invoque receive() en la conexión de datagramas. El método receive() bloquea otras operaciones hasta que recibe un paquete de datos. Utilice un temporizador para retransmitir la solicitudo cerrar la conexión si no llega una respuesta.

byte[] buf = new byte[256];Datagram inDatagram = conn.newDatagram(buf, buf.length);conn.receive(inDatagram);

11. Para extraer los datos de un datagrama, invoque getData(). Si conoce el tipo de los datos que está recibiendo, conviertalos datos al formato adecuado.

String received = new String(inDatagram.getData());

12. Cierre la conexión de datagramas, invoque close() en los flujos de entrada y de salida y en el objeto de conexión dedatagramas.

conn.close();

Guía de desarrollo Conexiones

27

Page 30: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Utilizar una conexión de puerto USB o de puerto serieA través de una conexión USB o de serie, las aplicaciones del dispositivo BlackBerry® pueden comunicarse con aplicaciones deescritorio cuando se conectan a un ordenador mediante un puerto USB o puerto serie. Este tipo de conexión también permite alas aplicaciones del dispositivo BlackBerry comunicarse con un dispositivo periférico que se conecta al puerto USB o al puertode serie.

1. Importe las siguientes clases:• javax.microedition.io.Connector• java.io.DataOutputStream• java.lang.String• java.io.DataInputStream

2. Importe la interfaz javax.microedition.io.StreamConnection.

3. Invoque Connector.open() y especifique comm como protocolo y COM1 o USB como puerto para abrir una conexiónde puerto USB o de puerto serie.

private StreamConnection _conn = (StreamConnection)Connector.open("comm:COM1;baudrate=9600;bitsperchar=8;parity=none;stopbits=1");

4. Para enviar datos en la conexión de puerto USB o de puerto serie, invoque openDataOutputStream() uopenOutputStream().

DataOutputStream _dout = _conn.openDataOutputStream();

5. Utilice métodos de escritura en el flujo de salida para introducir los datos.

private String data = "This is a test";_dout.writeChars(data);

6. Para recibir datos en la conexión de puerto USB o de puerto serie, utilice un subproceso de eventos distinto al principalpara leer los datos del flujo de entrada. Invoque openInputStream() u openDataInputStream().

DataInputStream _din = _conn.openInputStream();Use the read methods on the input stream to read data.

7. Utilice métodos de lectura en el flujo de entrada para leer los datos.

String contents = _din.readUTF();

8. Para cerrar la conexión de puerto USB o de puerto serie, invoque close() en los flujos de entrada y de salida y en el objetode conexión del puerto. El método close() puede emitir IOExceptions. Asegúrese de que la aplicación del dispositivoBlackBerry implementa la gestión de excepciones.

_din.close();_dout.close();conn.close();

Guía de desarrollo Conexiones

28

Page 31: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Utilizar una conexión de puerto serie es una marca comercial de Bluetooth SIG.Puede utilizar la API de es una marca comercial de Bluetooth SIG. (net.rim.device.api.bluetooth) para permitir a laaplicación del dispositivo BlackBerry® acceder al perfil de puerto serie es una marca comercial de Bluetooth SIG. e iniciar unaconexión de puerto serie es una marca comercial de Bluetooth SIG. de servidor o cliente con un ordenador u otro dispositivo cones una marca comercial de Bluetooth SIG..

1. Importe las siguientes clases:• javax.microedition.io.Connector• net.rim.device.api.bluetooth.BluetoothSerialPort• java.io.DataOutputStream• java.io.DataInputStream• java.lang.String• java.io.IOException

2. Importe la interfaz javax.microedition.io.StreamConnection.

3. Invoque Connector.open(), proporcionando la información del puerto serie queBluetoothSerialPort.getSerialPortInfo() devuelve como parámetro para abrir una conexión es una marcacomercial de Bluetooth SIG..

BluetoothSerialPortInfo[] info = BluetoothSerialPort.getSerialPortInfo();StreamConnection _bluetoothConnection = (StreamConnection)Connector.open( info[0].toString(), Connector.READ_WRITE );

4. Para enviar datos en la conexión es una marca comercial de Bluetooth SIG., invoque openDataOutputStream() uopenOutputStream().

DataOutputStream _dout = _bluetoothConnection.openDataOutputStream();

5. Utilice métodos de escritura en el flujo de salida para introducir los datos.

private static final int JUST_OPEN = 4;_dout.writeInt(JUST_OPEN);

6. Para recibir los datos en la conexión es una marca comercial de Bluetooth SIG., en un subproceso de eventos distinto alprincipal, invoque openInputStream() u openDataInputStream(). Utilice métodos de lectura en el flujo deentrada para leer los datos.

DataInputStream _din = _bluetoothConnection.openDataInputStream();String contents = _din.readUTF();

7. Invoque close() en los flujos de entrada y salida, así como en el objeto de conexión del puerto serie es una marca comercialde Bluetooth SIG. para cerrar la conexión es una marca comercial de Bluetooth SIG.. El método close() puede emitirIOExceptions. Asegúrese de que la aplicación del dispositivo BlackBerry implementa la gestión de excepciones.

Guía de desarrollo Conexiones

29

Page 32: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

if (_bluetoothConnection != null) {try { _bluetoothConnection.close(); } catch(IOException ioe) { }}if (_din != null) {try { _din.close(); } catch(IOException ioe) { }}if (_dout != null) {try { _dout.close(); } catch(IOException ioe) { }}_bluetoothConnection = null;_din = null;_dout = null;

Conexiones Wi-Fi

Familias de acceso inalámbrico

El funcionamiento con el transmisor del dispositivo BlackBerry® implica el uso de API que hacen referencia a las familias deacceso inalámbrico.

Familia de acceso inalámbrico Descripción

3GPP incluye GPRS, EDGE, UMTS®, GERAN, UTRAN y GAN

CDMA incluye CDMA1x y EVDO

WLAN incluye 802.11™, 802.11a™, 802.11b™ y 802.11g™

Para obtener más información acerca de las familias de acceso inalámbrico, consulte la referencia de API para BlackBerry® Java®Development Environment.

Recuperar las familias de acceso inalámbrico con las que es compatible un dispositivoBlackBerry1. Importe la clase net.rim.device.api.system.RadioInfo.

Guía de desarrollo Conexiones Wi-Fi

30

Page 33: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

2. Invoque RadioInfo.getSupportedWAFs().

Determinar si un dispositivo BlackBerry es compatible con las distintas familias de accesoinalámbrico1. Importe la clase net.rim.device.api.system.RadioInfo.

2. Invoque RadioInfo.areWAFsSupported(int wafs).

Determinar los transmisores de la familia de acceso inalámbrico que están activados1. Importe la clase net.rim.device.api.system.RadioInfo.

2. Invoque RadioInfo.getActiveWAFs().

Activar el transmisor para una familia de acceso inalámbrico1. Importe la clase net.rim.device.api.system.Radio.

2. Invoque Radio.activateWAFs(int WAFs). El parámetro WAFs es una máscara de bits.

Desactivar el transmisor para una familia de acceso inalámbrico1. Importe la clase net.rim.device.api.system.Radio.

2. Invoque Radio.deactivateWAFs(int WAFs). El parámetro WAFs es una máscara de bits.

Comprobar si el transmisor Wi-Fi está activado1. Importe la clase net.rim.device.api.system.RadioInfo.

2. Cree una declaración IF que compruebe el valor de RadioInfo.WAF_WLAN y el valor devuelto porRadioInfo.getActiveWAFs().

if ( ( RadioInfo.getActiveWAFs() & RadioInfo.WAF_WLAN ) != 0 ) { … }

Comprobar si el transmisor Wi-Fi está conectado a un punto de acceso inalámbrico1. Importe la clase net.rim.device.api.system.WLANInfo.

2. Cree una declaración IF que compruebe el valor de WLANInfo.WLAN_STATE_CONNECTED y el valor devuelto porWLANInfo.getWLANState(). El método WLANInfo.getWLANState() comprueba si el dispositivo BlackBerry®tiene una dirección IP y si puede transferir datos a través de una red Wi-Fi®. Si el transmisor para la familia de accesoinalámbrico de WLAN está desactivado, este método devuelve WLANInfo.WLAN_STATE_DISCONNECTED.

if (WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED) {…}

Guía de desarrollo Conexiones Wi-Fi

31

Page 34: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Recuperar el estado del punto de acceso inalámbrico o el perfil Wi-Fi activo

Puede permitir al dispositivo BlackBerry® recuperar la información de estado, como la velocidad de transferencia de datos de laconexión, la red LAN inalámbrica estándar utilizada (802.11a™, 802.11b™ o 802.11g™), el SSID del punto de acceso asociado o elnombre del perfil Wi-Fi en uso. El transmisor de la familia de acceso inalámbrico de WLAN debe estar conectado a un punto deacceso inalámbrico.

1. Importe la clase net.rim.device.api.system.WLANInfo.

2. Invoque WLANInfo.getAPInfo(), almacenando una referencia al objeto WLANInfo.WLANAPInfo que devuelvaeste método. El objeto WLANInfo.WLANAPInfo contiene una instantánea de la red inalámbrica actual.

WLANInfo.WLANAPInfo info = WLANInfo.getAPInfo();

Si el dispositivo BlackBerry no se conecta a un punto del acceso, el método WLANInfo.getAPInfo() devuelve un valornull.

Recuperar el nombre de la red inalámbrica1. Importe las siguientes clases:

• net.rim.device.api.system.RadioInfo• java.lang.String• net.rim.device.api.ui.Field

2. Invoque RadioInfo.getCurrentNetworkName(). El dispositivo BlackBerry® debe estar conectado a una redinalámbrica para que este método funcione.

String networkName = RadioInfo.getCurrentNetworkName();System.out.println (“Network Name: “ + networkName );

Abrir una conexión de socket Wi-Fi

El parámetro interface=wifi se aplica únicamente a las conexiones TCP/UDP. Para establecer una conexión Wi-Fi® yutilizar una API de Wi-Fi en una aplicación del dispositivo BlackBerry®, el proveedor de servicios inalámbricos debe proporcionarcompatibilidad con el acceso Wi-Fi.

1. Importe las siguientes clases:• java.lang.String• javax.microedition.io.Connector

2. Importe la interfaz javax.microedition.io.StreamConnection.

3. Invoque Connector.open(), especifique socket como protocolo y agregue el parámetro deviceside=true y elparámetro interface=wifi al final del valor de la cadena de la URL.

Guía de desarrollo Conexiones Wi-Fi

32

Page 35: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

private static String URL = "socket://local_machine_IP:4444;deviceside=true;interface=wifi";StreamConnection conn = null;conn = (StreamConnection)Connector.open(URL);

Abrir una conexión HTTP Wi-Fi

El parámetro interface=wifi se aplica únicamente a las conexiones TCP/UDP. Para establecer una conexión Wi-Fi® yutilizar una API de Wi-Fi en una aplicación del dispositivo BlackBerry®, el proveedor de servicios inalámbricos debe proporcionarcompatibilidad con el acceso Wi-Fi.

1. Importe las siguientes clases:• java.lang.String• javax.microedition.io.Connector

2. Importe la interfaz javax.microedition.io.HttpConnection.

3. Invoque Connector.open(), especifique http como protocolo y agregue el parámetro interface=wifi al final delvalor de la cadena de la URL.

4. Asigne el objeto devuelto como un objeto HttpConnection o un objeto StreamConnection.

HttpConnection conn = null;String URL = "http://www.myServer.com/myContent;deviceside=true;interface=wifi";conn = (HttpConnection)Connector.open(URL);

Abrir una conexión HTTPS Wi-Fi

El parámetro interface=wifi se aplica únicamente a las conexiones TCP/UDP. Para establecer una conexión Wi-Fi® yutilizar una API de Wi-Fi en una aplicación del dispositivo BlackBerry®, el proveedor de servicios inalámbricos debe proporcionarcompatibilidad con el acceso Wi-Fi.

1. Importe las siguientes clases:• java.lang.String• javax.microedition.io.Connector

2. Importe la interfaz javax.microedition.io.HttpsConnection.

3. Invoque Connector.open(), especifique https como protocolo y agregue el parámetro interface=wifi al final delvalor de la cadena de la URL.

4. Asigne el objeto devuelto como un objeto HttpsConnection.

HttpsConnection conn = null;String URL = "https://host:443/;deviceside=true;interface=wifi";conn = (HttpsConnection)Connector.open(URL);

Guía de desarrollo

33

Page 36: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

API de red mejoradaPuede especificar el modo en que la aplicación abre una conexión a una red inalámbrica mediante la API de red mejorada quese incluye en los paquetes net.rim.device.api.io.transport ynet.rim.device.api.io.transport.options. La API de red simplifica el modo en que la aplicación establece unaconexión a una red inalámbrica y le permite encontrar los tipos de transporte inalámbrico disponibles en el dispositivo BlackBerry®.Por ejemplo, puede utilizar la API de red para conocer la disponibilidad y la potencia de señal de una red Wi-Fi® que la aplicaciónpuede utilizar para abrir una conexión HTTP.

Puede utilizar la API de red para especificar una lista de tipos de transporte inalámbrico preferidos. Por ejemplo, si una red Wi-Fi no está disponible o no tiene suficiente potencia de señal, puede hacer que la aplicación busque otros tipos de transporte,como una red móvil. Si no especifica un tipo de transporte, el dispositivo BlackBerry buscará de forma predeterminada todos lostipos de transporte disponibles.

Para obtener más información sobre la API de red, consulte la Guía de desarrollo de BlackBerry Java Application y ladocumentación sobre API para BlackBerry® Java® Development Environment.

Ejemplo de código: mostrar los tipos de transporte disponibles

/** DisplayAvailableTransportTypesScreen.java** Research In Motion Limited proprietary and confidential* Copyright Research In Motion Limited, 2009*/import net.rim.device.api.ui.*;import net.rim.device.api.ui.component.*;import net.rim.device.api.ui.container.*;import net.rim.device.api.io.transport.*;import java.lang.StringBuffer;public class DisplayAvailableTransportTypes extends UiApplication{ public static RichTextField _message = new RichTextField("");public static void main(String[] args){ DisplayAvailableTransportTypes theApp = new DisplayAvailableTransportTypes(); theApp.enterEventDispatcher();}public DisplayAvailableTransportTypes(){ pushScreen(new DisplayAvailableTransportTypesScreen());}}class DisplayAvailableTransportTypesScreen extends MainScreen{

Guía de desarrollo API de red mejorada

34

Page 37: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

private RichTextField strMessage = new RichTextField(""); public DisplayAvailableTransportTypesScreen() { LabelField title = new LabelField("Transport Types Sample", LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH); setTitle(title); add(new RichTextField("Detected the following transport types:\n")); int TransportTypes[] = TransportInfo.getAvailableTransportTypes(); StringBuffer sbTmp = new StringBuffer(""); for(int i=0; i<TransportTypes.length; i++) { int tt = TransportTypes[i]; switch(tt) { case TransportInfo.TRANSPORT_BIS_B: sbTmp.append(" BIS-B\n"); break; case TransportInfo.TRANSPORT_MDS: sbTmp.append("* MDS\n"); break; case TransportInfo.TRANSPORT_TCP_CELLULAR: sbTmp.append("* TCP Cellular\n"); break; case TransportInfo.TRANSPORT_TCP_WIFI: sbTmp.append("* Wifi\n"); break; case TransportInfo.TRANSPORT_WAP: sbTmp.append("* WAP 1.0 or 1.1\n"); break; case TransportInfo.TRANSPORT_WAP2: sbTmp.append("* WAP 2.0\n"); break; } } strMessage.setText(sbTmp.toString()); add(strMessage); }}

Ejemplo de código: crear una conexión a través de HTTP utilizando el primer protocolo detransporte disponible

/** HTTPFirstAvailable.java** Research In Motion Limited proprietary and confidential* Copyright Research In Motion Limited, 2010*/

Guía de desarrollo API de red mejorada

35

Page 38: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

import net.rim.device.api.ui.*;import net.rim.device.api.ui.component.*;import net.rim.device.api.ui.container.*;import net.rim.device.api.io.transport.*;import javax.microedition.io.*;import java.io.*;public class HTTPFirstAvailable extends UiApplication{ public static void main(String[] args) { HTTPFirstAvailable theApp = new HTTPFirstAvailable(); theApp.enterEventDispatcher(); } public HTTPFirstAvailable() { pushScreen(new HTTPFirstAvailableScreen()); }}class ConnectionThread extends Thread{ public void run() { ConnectionFactory connFact = new ConnectionFactory(); ConnectionDescriptor connDesc; connDesc = connFact.getConnection("http://www.example.com"); if (connDesc != null) { HttpConnection httpConn; httpConn = (HttpConnection)connDesc.getConnection(); try { final int iResponseCode = httpConn.getResponseCode(); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { Dialog.alert("Response code: " + Integer.toString(iResponseCode)); } }); } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); } } }} class HTTPFirstAvailableScreen extends MainScreen{ public HTTPFirstAvailableScreen()

Guía de desarrollo API de red mejorada

36

Page 39: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

{ setTitle("HTTP First Sample"); add(new RichTextField("Trying to make HTTP connection... \n")); ConnectionThread ct = new ConnectionThread(); ct.start(); }}

Guía de desarrollo API de red mejorada

37

Page 40: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Controlar el acceso a las API y a los datos de la aplicación 4

Comprobar si es necesaria una firma de códigoResearch In Motion efectúa el seguimiento del uso de las API confidenciales en BlackBerry® Java® Development Environmentcon el fin de controlar la seguridad y la exportación.

Ubique el elemento en la referencia API para BlackBerry Java Development Environment. Si el elemento tiene un iconoBloquear o está marcado como"firmado", la aplicación del dispositivo BlackBerry requerirá una clave firmada o firma, queproporciona RIM, antes de poder cargar los archivos .cod de la aplicación del dispositivo BlackBerry en un dispositivoBlackBerry.

API de BlackBerry con acceso controladoRIM controla las API de tiempo de ejecución, las API de aplicaciones BlackBerry® y las API de cifrado de BlackBerry.

Puede probar las aplicaciones del dispositivo BlackBerry que utilizan API controladas en BlackBerry® Smartphone Simulator sinfirmas de código; sin embargo, debe obtener firmas de código de RIM antes de poder cargar las aplicaciones del dispositivoBlackBerry en dispositivos BlackBerry.

Si utiliza cualquiera de los siguientes paquetes de API de BlackBerry, su aplicación del dispositivo BlackBerry necesitará firmasde código antes de poder cargarla en un dispositivo BlackBerry:

• net.rim.blackberry.api.browser• net.rim.blackberry.api.invoke• net.rim.blackberry.api.mail• net.rim.blackberry.api.mail.event• net.rim.blackberry.api.menuitem• net.rim.blackberry.api.options• net.rim.blackberry.api.pdap• net.rim.blackberry.api.phone• net.rim.blackberry.api.phone.phonelogs• net.rim.device.api.browser.field• net.rim.device.api.browser.plugin• net.rim.device.api.crypto• net.rim.device.api.io.http• net.rim.device.api.notification• net.rim.device.api.servicebook• net.rim.device.api.synchronization

Guía de desarrollo Controlar el acceso a las API y a los datos de la aplicación

38

Page 41: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

• net.rim.device.api.system

Registrarse para utilizar API controladas1. Rellene el formulario de registro en https://www.blackberry.com/SignedKeys/.

2. Guarde el archivo .csi que Research In Motion le ha enviado en un mensaje de correo electrónico. El archivo .csi contieneuna lista de firmas y su información de registro. Si el administrador de BlackBerry® Signing Authority Tool no le proporcionael archivo .csi ni el PIN del cliente y usted es miembro del programa ISV, póngase en contacto con el Administrador técnicode asociaciones del programa ISV. Si no es miembro del programa ISV, envíe un mensaje de correo electrónico a la direcció[email protected].

3. Haga doble clic en el archivo .csi.

4. Si aparece un cuadro de diálogo que indica que no se encuentra la clave privada, lleve a cabo los pasos del 5 al 8 antes decontinuar. De lo contrario, continué con el paso 9.

5. Haga clic en Sí para crear un archivo de par de claves nuevo.

6. En el campo Contraseña de clave privada, escriba una contraseña de, por lo menos, ocho caracteres y escríbala de nuevopara confirmarla. La contraseña de la clave privada protege su clave privada. Si pierde esta contraseña, debe registrarse denuevo con RIM. En el caso de que la contraseña fuera robada, póngase en contacto con RIM inmediatamente.

7. Haga clic en Aceptar.

8. Mueva el ratón para generar los datos de una clave privada nueva.

9. En el campo PIN de registro, escriba el PIN que RIM ha proporcionado.

10. En el campo Contraseña de clave privada, escriba la contraseña de clave privada.

11. Haga clic en Registrar.

12. Haga clic en Salir.

Restricciones de las firmas de códigoEl administrador de BlackBerry® Signing Authority Tool podría imponer restricciones al archivo .csi con el fin de limitar su accesoa las firmas de código. Para solicitar la realización de cambios en estas restricciones, póngase en contacto con su administrador.

Restricción del archivo .csi Descripción

número de solicitudes Esta restricción especifica el número máximo de solicitudes que puede realizar

utilizando un archivo .csi en particular. Una vez alcance el número máximo de

solicitudes, el archivo .csi pasa a ser no válido. Para realizar nuevas solicitudes de

firma de código, debe solicitar un nuevo archivo .csi.

Guía de desarrollo Registrarse para utilizar API controladas

39

Page 42: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Restricción del archivo .csi Descripción

Aunque un administrador pueda permitir un número infinito de solicitudes, el

número de solicitudes, a menudo, se especifica como número finito por motivos de

seguridad.

fecha de vencimiento Esta restricción especifica la fecha de vencimiento de cada archivo .csi. Después

de la fecha de vencimiento, no podrá solicitar más firmas de código con este

archivo .csi. Para realizar nuevas solicitudes de firma, debe solicitar un nuevo

archivo .csi.

Solicitar una firma de códigoLa herramienta BlackBerry® Signature Tool se incluye en BlackBerry® Java® Development Environment. BlackBerry JDE estádisponible para su descarga en www.blackberry.com/developers. La aplicación Firmante Web se instala al realizar la instalaciónde BlackBerry® Signing Authority Tool.

Para obtener más información acerca de la aplicación Firmante Web, consulte BlackBerry Signing Authority Tool versión 1.0 -Guía del administrador basada en contraseñas.

Antes de comenzar: Debe obtener un archivo .csi de Research In Motion.

1. En Windows® Internet Explorer®, busque el archivo .cod de la aplicación del dispositivo BlackBerry para la cual ha solicitadouna firma.

2. Asegúrese de que existe un archivo .csl con el mismo nombre que el que tiene el archivo .cod en la misma carpeta que ladel archivo .cod. El compilador de BlackBerry® Integrated Development Environment generará automáticamente elarchivo .csl.

3. Haga doble clic en el archivo .cod para agregarlo a la lista de firmas. La lista de firmas contiene información acerca de losarchivos .cod de los cuales desea obtener el permiso de acceso y para los cuales ha solicitado la firma.

4. Repita los pasos del 1 al 3 para cada archivo .cod que desee agregar a la lista de firmas.

5. En el menú de BlackBerry Signature Tool, haga clic en Solicitar.

6. En el cuadro de diálogo, escriba su contraseña de clave privada.

7. Haga clic en Aceptar.

BlackBerry Signature Tool utiliza la contraseña de clave privada para agregar la firma a la solicitud y envía la lista de firmas delos archivos .cod a la aplicación Firmante Web para su comprobación.

Guía de desarrollo Solicitar una firma de código

40

Page 43: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Registrar una clave de firma utilizando un servidor proxyPuede registrar cada uno de los archivos .csi sólo una vez.

1. En el símbolo del sistema, desplácese al directorio bin de BlackBerry® Signature Tool. Por ejemplo:

C:\Archivos de programa\Research In Motion\BlackBerry JDE 4.6.0\bin.

2. Escriba Java -jar -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=80 SignatureTool.jarSigKey.csi con los siguientes parámetros:

• SigKey: el nombre de cada uno de los archivos de clave de firma (.csi). Utilice el siguiente convenio de nombres paralas claves: client-RRT-*.csi, client-RBB-*.csi, client-RCR-*.csi.

• Dhttp.proxyHost: el nombre o dirección IP del servidor proxy.• Dhttp.proxyPort: el número de puerto del servidor proxy si no especifica 80 como número de puerto

predeterminado.

3. Repita el paso 2 para cada archivo .csi que desee registrar.

Firmar una aplicación mediante un servidor proxySu clave de registro y el archivo .csk se almacenan en la misma ubicación. Si pierde la clave de registro o e archivo .csk, no podrásolicitar firmas de código. Si no es miembro del programa ISV, póngase en contacto con el Administrador técnico de asociacionesdel programa ISV. Si es socio pero no del programa ISV, envíe un mensaje de correo electrónico a la dirección [email protected].

1. En el símbolo del sistema, desplácese al directorio bin de BlackBerry® Signature Tool. Por ejemplo:

C:\Archivos de programa\Research In Motion\BlackBerry JDE 4.6.0\bin.

2. Escriba Java -jar -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=80 SignatureTool.jar.

3. En la ventana Selección de archivos, seleccione el o los archivos .cod que va a firmar.

4. Haga clic en Abrir.

Ver el estado de la firma de una aplicaciónPara los archivos que no están firmados, la columna Estado muestra Error. El Firmante Web puede haber rechazado el archivo .codporque la contraseña de clave privada se ha escrito de forma incorrecta.

1. Inicie BlackBerry® Signature Tool.

2. Seleccione un archivo .cod.

3. Consulte la columna Estado.

Para los archivos que el Firmante Web ha firmado, la columna Estado muestra Firmado.

Guía de desarrollo Registrar una clave de firma utilizando un servidor proxy

41

Page 44: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Utilizar claves para proteger API y datosPara crear un par de claves internas que utilizar con el sistema de autoridad de firma interno, o bien un par de claves externascon un sistema de de autoridad de firma externo, debe llevar a cabo un proceso de protección de las API confidenciales, así comoproteger los datos del almacén de tiempo de ejecución y proteger los datos de un objeto constante.

La clave RSAE.key es una clave externa y ACMI.key es una clave interna.

Proteger API utilizando claves de firma de código1. Una vez ha recibido una clave interna, una clave externa o ambas claves, en BlackBerry® Integrated Development

Environment, abra el proyecto que contiene las API de las cuales desea controlar el acceso.

2. En la ventana Espacio de trabajo, haga clic con el botón derecho en el archivo del proyecto.

3. Haga clic en Agregar archivo a proyecto.

4. En el campo Buscar en, desplácese a C:\Archivos de programa\Research In Motion\BlackBerry Password Based CodeSigning Authority\data o a la ubicación donde se ha guardado el archivo .key.

5. Realice una de las siguientes tareas:

Opción Descripción

Utilice una clave interna a. Seleccione el archivo .key interno, por ejemplo, el archivoACMI.key.

b. Haga clic en Abrir.

c. En la ventana Espacio de trabajo, haga doble clic en elarchivo .key.

d. Seleccione la opción Utilizar como valor predeterminadopara clases públicas y la configuración Utilizar como valorpredeterminado para clases que no sean públicas.

e. Haga clic en Aceptar.

f. En la ventana Espacio de trabajo, haga clic con el botónderecho en el archivo del proyecto.

g. Haga clic en Agregar archivo a proyecto.

h. En el campo Buscar en, desplácese a C:\Archivos deprograma\Research In Motion\BlackBerry Password BasedCode Signing Authority\data.

Utilice una clave externa a. Seleccione el archivo .key externo, por ejemplo, el archivoRSAE.key.

b. Haga clic en Abrir.

Guía de desarrollo Utilizar claves para proteger API y datos

42

Page 45: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

c. En la ventana Protección de paquetes y clases, busque elnombre del paquete que contiene los elementos de las APIconfidenciales.

d. Expanda el contenido del paquete.

e. Seleccione cada elemento de la API que requiera control deacceso.

6. Haga clic en Aceptar.

7. Vuelva a compilar el proyecto.

Proteger datos del almacén de tiempo de ejecución utilizando claves de firmade código1. Importe las siguientes clases:

• java.util.Hashtable• net.rim.device.api.system.RuntimeStore

2. Cree un ID de hash para el objeto que desea almacenar en un objeto de tiempo de ejecución.

long MY_DATA_ID = 0x33abf322367f9018L;Hashtable myHashtable = new Hashtable();

3. Almacene el objeto en el almacén de tiempo de ejecución y proteja el objeto con el objeto CodeSigningKey. Sólo lasaplicaciones firmadas con la clave pueden leer o cambiar el objeto.

RuntimeStore.put( MY_DATA_ID, new ControlledAccess( myHashtable, key ) );

4. Asegúrese de que el objeto está protegido con una clave de firma de código específica, invoque RuntimeStore.get,proporcionando como parámetros el ID de hash del objeto y el objeto CodeSigningKey.

Proteger datos constantes utilizando claves de firma de código1. Importe las siguientes clases:

• java.util.Hashtable• net.rim.device.api.system.PersistentObject

2. Cree un ID de hash para el objeto que desea almacenar en un objeto constante.

long MY_DATA_ID = 0x33abf322367f9018L;Hashtable myHashtable = new Hashtable();

3. Almacene el objeto en el objeto constante y proteja el objeto con el objeto CodeSigningKey. Por ejemplo, una vez queuna aplicación del dispositivo BlackBerry ejecuta la siguiente línea de código, sólo los archivos de código firmados con elarchivo RSAE.key pueden leer o sobrescribir el objeto en el objeto constante.

Guía de desarrollo Proteger datos del almacén de tiempo de ejecución utilizando claves de firma de código

43

Page 46: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

persistentObject.setContents( new ControlledAccess( myHashtable, key ) );

4. Asegúrese de que el objeto está protegido, invoque getContents utilizando el objeto CodeSigningKey comoparámetro.

Hashtable myHashtable = (Hashtable) persistentObject.getContents( key );

Guía de desarrollo Proteger datos constantes utilizando claves de firma de código

44

Page 47: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Probar una aplicación del dispositivo BlackBerry 5

Probar aplicaciones en BlackBerry Smartphone SimulatorTras desarrollar y compilar su aplicación, puede probarla en el dispositivo BlackBerry®. El primer paso más común consiste enconfigurar BlackBerry® Java® Development Environment para que utilice BlackBerry® Smartphone Simulator. BlackBerrySmartphone Simulator ejecuta el mismo código Java que los dispositivos BlackBerry, de modo que BlackBerry SmartphoneSimulator proporciona un entorno adecuado para probar cómo las aplicaciones funcionarán en un dispositivo BlackBerry.BlackBerry JDE incluye las versiones actuales de BlackBerry Smartphone Simulator. Para descargar las versiones adicionales deBlackBerry Smartphone Simulator, visite www.blackberry.com/developers/index.shtml.

Probar aplicaciones en un dispositivo BlackBerryTras probar su aplicación en BlackBerry® Smartphone Simulator, puede instalar la aplicación en un dispositivo BlackBerry. Si suaplicación utiliza API firmadas, puede que necesite claves de firma de código. Tras instalar la aplicación en el dispositivoBlackBerry, puede abrirla y probar su funcionalidad y rendimiento.

Con el objeto de depurar, puede integrar su dispositivo en BlackBerry® Integrated Development Environment y utilizar laherramienta de depuración para avanzar a través del código de la aplicación. BlackBerry IDE puede ser útil si intenta identificaruna red o problema de es una marca comercial de Bluetooth SIG., así como otros problemas que son difíciles de simular.

Probar aplicaciones mediante archivos .cod compiladosAl crear un proyecto a través de BlackBerry® Integrated Development Environment, BlackBerry IDE compila los archivos originalescon código de bytes de Java®, lleva a cabo una verificación previa y crea un único archivo .cod y un archivo .jad para la aplicacióndel dispositivo BlackBerry®.

Si una aplicación del dispositivo BlackBerry contiene más de 64 KB de código de bytes o de datos de recursos, BlackBerry IDEcrea un archivo .cod que contiene archivos .cod "hermanos". Sólo BlackBerry® Browser es compatible con la instalacióninalámbrica de un archivo .cod que contiene archivos .cod "hermanos". Para determinar si un archivo .cod contiene archivos .cod"hermanos", extraiga el contenido del archivo .cod. Cualquiera de los archivos .cod dentro del archivo .cod original será un archivo"hermano".

Para identificar los módulos que necesita una aplicación del dispositivo BlackBerry, y que no se proporcionan con la misma,busque el atributo RIM-COD-Module-Dependencies del archivo descriptor de la aplicación (.jad) Java®.

Guía de desarrollo Probar una aplicación del dispositivo BlackBerry

45

Page 48: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Instalar y eliminar un archivo .cod para realizar pruebasPara cargar, eliminar o guardar archivos .cod al probar una aplicación del dispositivo BlackBerry®, debe utilizar la herramientaJavaLoader, incluida en BlackBerry® Java® Development Environment. Para aplicaciones de producción, utilice BlackBerry®Desktop Software. Debe cargar las aplicaciones del dispositivo BlackBerry con dependencias en el orden correcto. Si el proyectoA depende del proyecto B, cargue el archivo .cod del proyecto B antes de cargar el archivo .cod del proyecto A.

Guardar un archivo .cod que se encuentra en un dispositivo en un ordenadorPara cargar, eliminar o guardar archivos .cod al probar una aplicación del dispositivo BlackBerry®, debe utilizar la herramientaJavaLoader, incluida en BlackBerry® Java® Development Environment.

1. Conecte el dispositivo BlackBerry a un ordenador.

2. Abra un símbolo del sistema y desplácese a la ubicación en la que se encuentra el archivo Javaloader.exe.

3. Lleve a cabo una de las siguientes acciones:

Tarea Pasos

Guarde un archivo .cod de la

aplicación del dispositivo BlackBerry

que se encuentre en el dispositivo

BlackBerry en el ordenador.

Emita un comando siguiendo el siguiente formato: archivo javaloader

save .codPor ejemplo: javaloader.exe save MyApplication.cod

Guarde los archivos .cod de la

aplicación del dispositivo BlackBerry

enumerados en el mismo archivo .jad

desde el dispositivo BlackBerry al

ordenador.

Emita un comando siguiendo el siguiente formato: archivo javaloader

save .jadPor ejemplo: javaloader.exe save MyApplication.jad

Guarde los archivos .cod de la

aplicación del dispositivo BlackBerry

almacenados en el mismo

CodeModuleGroup desde el

dispositivo BlackBerry al ordenador.

Emita un comando siguiendo el siguiente formato: javaloader save

[-g] móduloPor ejemplo: javaloader.exe save -g MyApplication

Recuperar información acerca de un archivo .codPara cargar, eliminar o guardar archivos .cod al probar una aplicación del dispositivo BlackBerry®, debe utilizar la herramientaJavaLoader, incluida en BlackBerry® Java® Development Environment.

1. Conecte el dispositivo BlackBerry® al ordenador.

Guía de desarrollo Probar aplicaciones mediante archivos .cod compilados

46

Page 49: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

2. Abra un símbolo del sistema y desplácese a la ubicación en la que se encuentra el archivo Javaloader.exe.

3. Lleve a cabo una de las siguientes acciones:

Tarea Pasos

Recupere el nombre, la versión, el

tamaño y la fecha de creación del

archivo .cod.

Emita un comando siguiendo el siguiente formato: archivo javaloader

info .codPor ejemplo: javaloader.exe info MyApplication.cod

Recupere una lista de los archivos .cod

que requiere el archivo .cod para

ejecutarse.

Emita un comando siguiendo el siguiente formato: archivo javaloader

info [-d] .codPor ejemplo: javaloader.exe info -d MyApplication.cod

Recupere la información acerca de

• archivos .cod "hermanos"

• tamaño de la sección de

código

• tamaño de la sección de

datos

• tamaño de los datos

inicializados

• número de definiciones de

clase

• lista de firmas aplicada a un

archivo .cod

Emita un comando siguiendo el siguiente formato: archivo javaloader

info [-v] .codPor ejemplo: javaloader.exe info -v MyApplication.cod

Guía de desarrollo Probar aplicaciones mediante archivos .cod compilados

47

Page 50: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Empaquetar y distribuir una aplicación BlackBerry JavaApplication

6

Verificar previamente la aplicación del dispositivo BlackBerryPara reducir la cantidad de procesamiento que lleva a cabo el dispositivo BlackBerry® al cargar la aplicación del dispositivoBlackBerry, debe verificar parcialmente las clases. También puede utilizar BlackBerry® Smartphone Simulator para verificarpreviamente los archivos .cod.

En el símbolo del sistema, escriba:

preverify.exe [-d] output -classpath directory input; directory

Distribución de aplicaciones a través de la red inalámbricaPuede distribuir sus aplicaciones a través de la red inalámbrica para ayudar a proporcionar una mejor experiencia a los usuariosde dispositivos BlackBerry® y para simplificar la distribución de aplicaciones a un grupo grande de personas, puesto que norequiere una aplicación informática. Un usuario del dispositivo BlackBerry puede instalar sus aplicaciones a través de la redinalámbrica.

Extracción inalámbrica (iniciada por el usuario)Puede registrar aplicaciones compiladas en un sitio Web público o privado. Los usuarios de dispositivos BlackBerry® puedenvisitar el sitio Web para descargar aplicaciones a través de la red inalámbrica mediante el explorador de sus dispositivos BlackBerry.El explorador solicita al usuario que instale la aplicación y, a continuación, la aplicación se descarga a través de la red inalámbricay se instala en el dispositivo BlackBerry.

Push inalámbrico (iniciado por el servidor)En el entorno BlackBerry® Enterprise Server, el administrador puede insertar por push las aplicaciones y enviarlas a los usuariosde dispositivos BlackBerry a través de la red inalámbrica para su instalación obligatoria. El administrador crea una política nuevay especifica que el dispositivo BlackBerry requiere la aplicación. La aplicación se inserta por push y envía a los usuarios sin quesea necesaria ninguna interacción por parte del usuario. Las empresas pueden considerar práctico este enfoque a la hora deenviar aplicaciones nuevas a un gran número de usuarios de dispositivos BlackBerry.

Guía de desarrollo Empaquetar y distribuir una aplicación BlackBerry Java Application

48

Page 51: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Distribuir aplicaciones BlackBerry Java Applications a través de la redinalámbrica

Extraer archivos .cod "hermanos"Para asegurarse de que un usuario del dispositivo BlackBerry® no omita el archivo .cod original, en el servidor de contenido,extraiga los archivos .cod en un directorio diferente del directorio donde reside el archivo original.

1. Descomprima el archivo .cod original y extraiga los archivos .cod "hermanos".

2. Coloque cada uno de los archivos .cod hermanos en un servidor de contenido.

3. En el archivo .jad, enumere los archivos .cod "hermanos" por separado. Utilice el siguiente convenio de nombres para losarchivos .cod "hermanos": nombre del archivo original .cod - número de secuencia.

4. Cree un parámetro RIM-COD-URL-<#> para cada unos de los archivos .cod "hermanos" y coloque el nombre del archivo"hermano" a la derecha de este parámetro. # es un número que comienza con 1 y que incrementa en 1 por cada archivo"hermano". Dé a cada uno de los archivos .cod "hermanos" el mismo nombre que ha dado al archivo .cod original, seguidode -<#>.

5. Cree un parámetro RIM-COD-Size-<#> para cada unos de los archivos .cod "hermanos" y coloque el tamaño del archivo"hermano" a la derecha de este parámetro. # es el mismo número que se ha agregado al nombre del archivo "hermano".Coloque el parámetro RIM-COD-Size-<#> inmediatamente debajo del parámetro RIM-COD=URL-<#>.

Ejemplo: enumeración de los archivos .cod "hermanos" en un archivo .jad

El ejemplo siguiente contiene dos archivos "hermanos" denominados myApp-1.cod y myApp-2.cod, tras el archivo .cod originalmyAPP. El desarrollador agrega la extensión del archivo ".cod" a cada uno de los nombres del archivo "hermano". El desarrolladorcrea un parámetro RIM-COD-Size-<#> para cada archivo "hermano".

Manifest-Version: 1.0MIDlet-Version: 1.0.0MIDlet-1: ,,RIM-COD-Module-Dependencies: net_rim_cldcMicroEdition-Configuration: CLDC-1.0RIM-COD-Module-Name: MyAppMIDlet-Name: My ApplicationRIM-COD-URL: myApp.codRIM-COD-Size: 55000RIM-COD-URL-1: myApp-1.codRIM-COD-Size-1: 50000RIM-COD-URL-2: myApp-2.codRIM-COD-Size-2: 25000MicroEdition-Profile: MIDP-1.0

Guía de desarrollo Distribuir aplicaciones BlackBerry Java Applications a través de la red inalámbrica

49

Page 52: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Modificar la información de un conjunto de aplicaciones MIDlet

Puede utilizar la herramienta Updatejad, incluida en BlackBerry® Java® Development Environment, para procesar archivos .jady llevar a cabo las siguientes acciones:

• Corregir los tamaños de los archivos .cod indicados en un archivo .jad. Los tamaños de los archivos .cod enumerados en elarchivo .jad cambian una vez ha utilizado BlackBerry® Signing Authority Tool para firmar los archivos .cod.

• Crear archivos .jad que hagan referencia a varios archivos .cod.

Utilice la herramienta Updatejad sólo en archivos .jad creados utilizando BlackBerry® Integrated Development Environment ola herramienta de línea de comandos RAPC y firmados a través de BlackBerry Signing Authority Tool .

Los comandos de la herramienta Updatejad tienen el siguiente formato:

updatejad.exe -q -n input.jad [additional.jad]

Opción Descripción

-q Esta opción suprime la creación de mensajes de salida correcta para las operaciones

de procesamiento de los archivos .jad. Si ocurriera un error durante el

procesamiento del archivo .jad, se generará un código de salida distinto de cero.

-n Esta opción suprime la copia de seguridad del archivo .jad original.

input.jad Esta opción especifica el archivo .jad a actualizar.

additional.jad Esta opción especifica otros atributos a agregar al archivo de entrada .jad.

Para obtener más información, consulte la Ayuda de BlackBerry Integrated Development Environment o la guía BlackBerrySigning Authority Tool versión 1.0 - Guía del administrador basada en contraseñas.

Propiedades de los archivos .jad de aplicaciones del dispositivo BlackBerryBlackBerry® Integrated Development Environment le permite crear un archivo .jad de dos funciones para compatibilizar ladescarga de aplicaciones MIDlet en dispositivos BlackBerry y otros dispositivos inalámbricos. Con este fin, debe crear unarchivo .jad que contenga los atributos RIM-COD-URL y RIM-COD-Size, así como los atributos MIDlet-Jar-URL yMIDlet-Jar-Size. En dispositivos BlackBerry, descargue los archivos .cod; en otros dispositivos inalámbricos, descargue losarchivos .jar.

Atributo RIM obligatorio Descripción

RIM-COD-Creation-Time hora de creación del archivo .cod

RIM-COD-Module-Dependencies lista de módulos que requiere el archivo .cod

Guía de desarrollo Distribuir aplicaciones BlackBerry Java Applications a través de la red inalámbrica

50

Page 53: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Atributo RIM obligatorio Descripción

RIM-COD-Module-Name nombre del módulo que contiene el archivo .cod

RIM-COD-SHA1 hash SHA1 del archivo .cod

RIM-COD-Size tamaño (en bytes) del archivo .cod

RIM-COD-URL URL desde la que se puede cargar el archivo .cod

Atributo RIM opcional Descripción

RIM-Library-Flags reservado para uso por parte de Research In Motion

RIM-MIDlet-Flags reservado para uso por parte de RIM

RIM-MIDlet-NameResourceBundle nombre del paquete de recursos del que depende la aplicación del

dispositivo BlackBerry

RIM-MIDlet-Position el punto de colocación sugerido del icono de la aplicación en el

dispositivo BlackBerry podría no ser el punto de colocación real del

icono en la pantalla de inicio

Corregir los tamaños de los archivos .cod indicados en un archivo .jad.1. Debe utilizar BlackBerry® Integrated Development Environment para poder crear dos archivos de aplicaciones del dispositivo

BlackBerry®, por ejemplo, test.cod y test.jad.

2. Utilice BlackBerry® Signing Authority Tool para firmar el archivo .cod.

3. En un símbolo del sistema, desplácese a la ubicación de la herramienta Updatejad.

4. Escriba un comando para corregir los tamaños de los archivos .cod indicados en test.jad.

updatejad.exe test.jad

Crear archivos .jad que hagan referencia a varios archivos .cod.1. Debe utilizar BlackBerry® Integrated Development Environment para poder crear dos archivos de aplicaciones del dispositivo

BlackBerry®, por ejemplo, lib.cod y lib.jad.

2. Utilice BlackBerry® Signing Authority Tool para firmar el archivo .cod.

3. Utilice BlackBerry IDE para crear otros dos archivos de aplicaciones del dispositivo BlackBerry que utilicen el archivo .jad,por ejemplo, test.cod y test.jad.

4. Utilice BlackBerry Signing Authority Tool para firmar el nuevo archivo .cod.

5. En un símbolo del sistema, desplácese a la ubicación de la herramienta Updatejad.

6. Escriba un comando para agregar nombres del archivo .cod desde el primer archivo .jad al nuevo.

Guía de desarrollo Distribuir aplicaciones BlackBerry Java Applications a través de la red inalámbrica

51

Page 54: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

updatejad.exe test.jad lib.jad

Distribuir aplicaciones del dispositivo BlackBerry con BlackBerry DesktopSoftware

Elementos de un archivo .alx en una aplicación del dispositivo BlackBerry

Elemento Atributos Descripción

application id

platformVersion

blackBerryVersion

El elemento application contiene los elementos de una

única aplicación del dispositivo BlackBerry®.

El elemento application también puede contener elementos

application adicionales anidados. Este proceso de anidado

le permite solicitar que cuando se cargue una aplicación del

dispositivo BlackBerry en el dispositivo BlackBerry, sus módulos

de requisitos previos se carguen también en el dispositivo

BlackBerry.

El atributo id especifica un identificador único para la aplicación

del dispositivo BlackBerry. Para proporcionar la capacidad de

exclusividad, utilice un ID que incluya el dominio de la compañía

en el orden inverso. Por ejemplo, com.rim.samples.

docs.helloworld.

El atributo platformVersion especifica la versión del

software del sistema operativo de un dispositivo BlackBerry que

requiere la aplicación del dispositivo BlackBerry.

El atributo blackBerryVersion especifica la versión de

BlackBerry® Device Software que requiere la aplicación del

dispositivo BlackBerry.

copyright — El elemento copyright proporciona información de copyright,

que aparece en la herramienta Cargador de aplicaciones de

BlackBerry® Desktop Manager.

Guía de desarrollo Distribuir aplicaciones del dispositivo BlackBerry con BlackBerry Desktop Software

52

Page 55: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Elemento Atributos Descripción

description — El elemento description proporciona una breve descripción

de la aplicación del dispositivo BlackBerry, que aparece en la

herramienta Cargador de aplicaciones de BlackBerry Desktop

Manager.

directory platformVersion

blackBerryVersion

El elemento directory proporciona la ubicación de un

conjunto de archivos. El elemento directory es opcional. Si

no especifica un directorio, los archivos deben estar en la misma

ubicación que el archivo .alx. El elemento directory especifica

el directorio relativo a la ubicación del archivo .alx.

Los elementos directory son acumulativos dentro de la

aplicación del dispositivo BlackBerry.

Por ejemplo:

<application id="com.abc.my.app"><directory>MyCodFiles</directory><fileset Java="1.0"><files>a.cod //resolves to <.alx location>\MyCodFilesb.cod</files></fileset><directory>MyCodFiles</directory><fileset Java="1.0"><files>c.cod //resolves to <.alx location>\MyCodFiles\MyCodFilesd.cod</files></fileset></application>

El atributo platformVersion especifica la versión del

software del sistema operativo de un dispositivo BlackBerry que

requiere la aplicación del dispositivo BlackBerry.

El atributo blackBerryVersion especifica la versión de

BlackBerry Device Software que requiere la aplicación del

dispositivo BlackBerry.

Guía de desarrollo Distribuir aplicaciones del dispositivo BlackBerry con BlackBerry Desktop Software

53

Page 56: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Elemento Atributos Descripción

files — El elemento files proporciona una lista de uno o más

archivos .cod de la aplicación del dispositivo BlackBerry en un

único directorio, para cargarlos en el dispositivo BlackBerry.

fileset Java

radio

langid

Colour

platformVersion

blackBerryVersion

El elemento fileset incluye un elemento directory

opcional y uno o más elementos files. Especifica un conjunto

de archivos .cod, en un único directorio, para cargarlos en el

dispositivo BlackBerry. Para cargar los archivos desde más de un

directorio, incluya uno o más elementos fileset en el

archivo .alx.

El atributo Java especifica la versión mínima de BlackBerry®

Java® Virtual Machine con la que son compatibles los

archivos .cod. El atributo Java es obligatorio.

El atributo radio le permite cargar diferentes aplicaciones o

módulos del dispositivo BlackBerry en el dispositivo BlackBerry

dependiendo del tipo de red del dispositivo BlackBerry. Entre los

valores posibles se encuentran: Mobitex, DataTAC, GPRS,

CDMA e IDEN. El atributo radio es opcional.

El atributo langid le permite cargar distintas aplicaciones o

módulos del dispositivo BlackBerry dependiendo de la

compatibilidad de idioma que los usuarios del dispositivo

BlackBerry agreguen al dispositivo BlackBerry. El valor es un

código langid de Win32, por ejemplo 0x0009 (inglés), 0x0007

(alemán), 0x000a (español) y 0x000c (francés). El atributo

langid es opcional.

El atributo colour le permite que cargar distintas aplicaciones

o módulos del dispositivo BlackBerry para visualizaciones en

color o monocromáticas. Se trata de un valor Booleano;

true significa visualización en color y false significa

monocromática.

El atributo platformVersion especifica la versión del

software del sistema operativo de un dispositivo BlackBerry que

requiere la aplicación del dispositivo BlackBerry.

Guía de desarrollo Distribuir aplicaciones del dispositivo BlackBerry con BlackBerry Desktop Software

54

Page 57: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Elemento Atributos Descripción

El atributo blackBerryVersion especifica la versión de

BlackBerry Device Software que requiere la aplicación del

dispositivo BlackBerry.

hidden — El elemento hidden oculta un paquete para que no aparezca

para los usuarios del dispositivo BlackBerry en el Cargado de

aplicaciones. Para ocultar un paquete, agregue la siguiente línea:

<hidden>true</hidden>.

Utilice este elemento junto con el elemento required para

cargar la aplicación del dispositivo BlackBerry de forma

predeterminada, o bien configure la etiqueta requires para

cargar este paquete en el caso de que exista otra aplicación del

dispositivo BlackBerry.

Sólo los administradores del sistema corporativo deberían utilizar

la etiqueta hidden. El uso de esta etiqueta no está destinado a

proveedores de software de otros fabricantes.

BlackBerry Desktop Software versión 3.6 o posterior es

compatible con este elemento.

language langid El elemento language le permite omitir el texto que aparece

en el Cargador de aplicaciones cuando éste se ejecuta en el

idioma que especifica el atributo langid.

Para ofrecer compatibilidad con varios idiomas, debe especificar

varios elementos language. Con el fin de especificar elementos

name, description, version, vendor y copyright para

cada idioma, anide estos elementos en el elemento

language. Si no anida un elemento, el texto aparece en el

idioma predeterminado.

El atributo langid especifica el código langid de Win32 para

el idioma al cual se aplica esta información. Por ejemplo, algunos

códigos langid de Win32 son: 0x0009 (inglés), 0x0007

(alemán), 0x000a (español) y 0x000c (francés).

Guía de desarrollo Distribuir aplicaciones del dispositivo BlackBerry con BlackBerry Desktop Software

55

Page 58: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Elemento Atributos Descripción

library id Puede utilizar el elemento library en lugar del elemento

application. Contiene los elementos de un solo módulo de

la biblioteca. No es posible anidar módulos. De forma

predeterminada, el módulo de la biblioteca no aparece en la

herramienta Cargador de aplicaciones de BlackBerry Desktop

Manager.

Normalmente, utiliza el elemento library como el destino del

elemento <requires>, de forma que cuando una aplicación

particular del dispositivo BlackBerry se carga en el dispositivo

BlackBerry, el elemento library necesario también se cargue en

el dispositivo BlackBerry.

BlackBerry Desktop Software versión 3.6 o superior también es

compatible con este elemento.

loader version El elemento loader contiene uno o más elementos

application.

El atributo version especifica la versión de la herramienta

Cargador de aplicaciones de BlackBerry Desktop Manager.

nombre — El elemento name proporciona un nombre descriptivo a la

aplicación del dispositivo BlackBerry, que aparece en la

herramienta Cargador de aplicaciones de BlackBerry Desktop

Manager.

required — El elemento required le permite imponer a los usuarios que

carguen una aplicación. La herramienta Cargador de

aplicaciones de BlackBerry Desktop Manager selecciona la

aplicación del dispositivo BlackBerry para la instalación, el

usuario del dispositivo BlackBerry no puede cambiar esta opción.

Agregue la siguiente línea: <required>true</

required>.

Sólo los administradores del sistema corporativo deberían utilizar

la etiqueta required. Los proveedores de software de otros

fabricantes no deberán utilizar esta etiqueta.

Guía de desarrollo Distribuir aplicaciones del dispositivo BlackBerry con BlackBerry Desktop Software

56

Page 59: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Elemento Atributos Descripción

BlackBerry Desktop Software versión 3.5 o posterior es

compatible con este elemento.

requires id El elemento requires es un elemento opcional que especifica

el id del que depende esta aplicación del dispositivo BlackBerry.

Este elemento puede aparecer más de una vez, si la aplicación

del dispositivo BlackBerry depende de más de una aplicación del

dispositivo BlackBerry. Cuando una aplicación del dispositivo

BlackBerry se carga en el dispositivo BlackBerry, todos los

paquetes que especifica la etiqueta <requires> se cargan

también en el dispositivo BlackBerry.

BlackBerry Desktop Software versión 3.6 o superior también es

compatible con este elemento.

vendor — El elemento vendor proporciona el nombre de la compañía que

ha creado la aplicación del dispositivo BlackBerry que aparece

en la herramienta Cargador de aplicaciones de BlackBerry

Desktop Manager.

version — El elemento version proporciona el número de versión de la

aplicación del dispositivo BlackBerry, que aparece en la

herramienta Cargador de aplicaciones de BlackBerry Desktop

Manager. Este número de versión sólo persigue fines

informativos.

Distribución de aplicaciones a través de una conexión de ordenador

Distribuir una aplicación desde un ordenador

Puede utilizar la herramienta Cargador de aplicaciones en BlackBerry® Desktop Manager para instalar aplicaciones en eldispositivo BlackBerry. La herramienta Cargador de aplicaciones ofrece a los usuarios un modo sencillo de descargar lasaplicaciones desde sus ordenadores a sus dispositivos BlackBerry.

Guía de desarrollo Distribución de aplicaciones a través de una conexión de ordenador

57

Page 60: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Distribuir una aplicación desde una página Web

Puede utilizar BlackBerry® Application Web Loader para registrar la aplicación compilada en un sitio Web. Los usuarios puedenutilizar Windows® Internet Explorer® en sus ordenadores para visitar la página Web e instalar la aplicación en sus dispositivosBlackBerry. Cuando los usuarios de dispositivos BlackBerry visitan la página Web, BlackBerry Application Web Loader les solicitaque conecten sus dispositivos al puerto USB. A continuación, pueden instalar la aplicación mediante un control ActiveX®.BlackBerry Application Web Loader ofrece a los usuarios de dispositivos BlackBerry una manera sencilla de instalar las aplicacionesdesde sus ordenadores sin ejecutar BlackBerry® Desktop Manager.

Distribuir una aplicación para la prueba

BlackBerry® Java® Development Environment incluye una herramienta de línea de comandos denominada JavaLoader que seubica en la carpeta BIN dentro de la carpeta BlackBerry JDE. Puede utilizar la herramienta JavaLoader para instalar y eliminarrápidamente los archivos de la aplicación compilados en el dispositivo BlackBerry directamente a través del puerto USB. Nonecesita ningún archivo de descriptor o páginas Web. La herramienta JavaLoader puede ser útil si instala y elimina la aplicacióncon frecuencia durante la prueba y desarrollo; sin embargo, la herramienta JavaLoader no se ha diseñado para su uso por partede usuarios de dispositivos BlackBerry.

Distribuir una aplicación desde un ordenador

Crear un archivo del Cargador de aplicacionesUtilice un archivo del Cargador de aplicaciones para distribuir una aplicación del dispositivo BlackBerry® a través de laherramienta Cargador de aplicaciones de BlackBerry® Desktop Manager.

1. Cree un archivo .alx para cada aplicación del dispositivo BlackBerry y, a continuación, distribuya el archivo .alx con losarchivos .cod a los usuarios de dispositivos BlackBerry. Consulte la Ayuda en línea del Cargador de aplicaciones para obtenermás información acerca de los archivos .alx.

2. En BlackBerry® Integrated Development Environment, seleccione un proyecto.

3. En el menú Proyecto, haga clic en Generar archivo .alx.

Instalar una aplicación del dispositivo BlackBerry en un dispositivo específico1. Abra un editor de texto.

2. Ubique el archivo .alx de la aplicación del dispositivo BlackBerry®.

3. En el archivo .alx, asegúrese de que el atributo de serie en la etiqueta de apertura del conjunto de archivos se refiere aldispositivo BlackBerry en el cual desea instalar la aplicación del dispositivo BlackBerry.

Guía de desarrollo Distribuir una aplicación desde un ordenador

58

Page 61: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

<fileset series="8700" Java="1.0">

Para obtener más información acerca del atributo de serie, consulte el archivo Platform.alx ubicado en el directorio delsimulador del directorio de instalación de BlackBerry® Java® Development Environment:

Archivos de programa\Research In Motion\BlackBerry JDE 4.6.0\simulator.

4. Asegúrese de que la etiqueta de los archivos contiene una referencia al archivo .cod para la aplicación del dispositivoBlackBerry.

<files> My_application.cod </files>

5. Actualice la aplicación, la descripción y el resto de etiquetas para reflejar el objetivo del archivo .alx.

<application id="Push only to 8700">...<description>This will push the COD only to 8700s</description>

Ejemplo de código: cargar una aplicación del dispositivo BlackBerry en un dispositivo BlackBerry específico<loader version="1.0"><application id="Push only to 8700"><name>Alien</name><description>This will push the COD only to 8700s</description> <version>2006.02.14.1838</version><vendor>RIM</vendor><copyright>Copyright (c) 2001-2005</copyright> <fileset series="8700" Java="1.0"> <files> My_application.cod </files> </fileset></application> </loader>

Especificar versiones compatibles de BlackBerry Device SoftwareLas aplicaciones del dispositivo BlackBerry® que utilizan API que están sólo disponibles en versiones concretas de BlackBerry®Device Software deben especificar las versiones compatibles del dispositivo BlackBerry mediante el atributo_blackberryVersion.

Las aplicaciones del dispositivo BlackBerry que se utilizan en un dispositivo BlackBerry que ejecuta en una versión específica dela plataforma deben especificar las versiones compatibles de la plataforma mediante el atributo _platformVersion. Elatributo _platformVersion puede utilizarse dentro de la etiqueta del directorio, la etiqueta de la aplicación, o la etiquetadel conjunto de archivos.

Guía de desarrollo Especificar versiones compatibles de BlackBerry Device Software

59

Page 62: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Puede utilizar las siguientes reglas para especificar un intervalo de versiones para BlackBerry Device Software o para la versiónde la plataforma:

• Los corchetes [] indican coincidencias de intervalo inclusivas (cerrado).• Los paréntesis () indican coincidencias de intervalo exclusivas (abierto).• Intervalos inferiores ausentes implican 0.• Intervalos superiores ausentes implican infinito.

Por ejemplo, [4.0,) indica cualquier versión entre 4.0 e infinito.

Ejemplo de código: evitar la carga de módulos en versiones de BlackBerry Device Software anteriores a la versión 4.0.<application id="application_id" _blackberryVersion="[4.0,)">...</application>

Ejemplo de código: proporcionar módulos alternativos para versiones diferentes de BlackBerry Device Software.<application id="application_id>">...<fileset _blackberryVersion="(,4.0)"> ... modules for BlackBerry device software versions earlier than 4.0</fileset><fileset _blackberryVersion="[4.0,)"> ... modules for BlackBerry device software versions 4.0 and later</fileset></application>

Ejemplo de código: evitar la carga de módulos en versiones de la plataforma anteriores a la versión 2.4.0.66.<application id="application_id" _platformVersion="[2.4.0.66,)">...</application>

Ejemplo de código: proporcionar módulos alternativos para versiones diferentes de la plataforma.<application id="application_id>">...<fileset _platformVersion="(,2.4.0.66)"> ... modules for BlackBerry OS plaform versions earlier than 2.4.0.66</fileset><fileset _platformVersion="[2.4.0.66,)"> ... modules for BlackBerry OS plaform versions 2.4.0.66 and later</fileset></application>

Guía de desarrollo Especificar versiones compatibles de BlackBerry Device Software

60

Page 63: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Especificar una ubicación para su aplicación en un dispositivo BlackBerryPuede agregar su aplicación del dispositivo BlackBerry® a una de las carpetas de aplicaciones que esté disponible con el temaen el dispositivo, a una carpeta de aplicaciones nueva que haya creado, o bien a la pantalla de inicio en el dispositivo. Por ejemplo,si desarrolla un juego, puede agregarlo a la carpeta Juegos del dispositivo BlackBerry. Si su aplicación tiene distintos puntos deentrada, puede especificar una carpeta de aplicaciones para cada punto de entrada. Si no especifica una ubicación, el dispositivoBlackBerry agregará la aplicación a la carpeta de aplicaciones predeterminada (por ejemplo, la carpeta Descargas). Puedeespecificar la ubicación de las aplicaciones instaladas en un dispositivo BlackBerry que ejecute BlackBerry® Device Software 5.0o posterior.

Las siguientes carpetas de aplicaciones están disponibles con el tema Precision en un dispositivo que ejecuta BlackBerry DeviceSoftware 5.0:

• Aplicaciones• Descargas• Juegos• Mensajería instantánea• Correo• Multimedia• Música• Configuración

Si crea una carpeta de aplicaciones nueva, el nombre de la carpeta debe utilizar caracteres válidos. Por ejemplo, no puede utilizarcaracteres como el signo menor que (<) o mayor que (>). Para obtener una lista de los caracteres que no son válidos, consulte ladocumentación de la clase FilenameTextFilter en la referencia API de BlackBerry® Java® Development Environment.

Un usuario puede cambiar la ubicación de su aplicación en el dispositivo. Si un usuario cambia la ubicación de su aplicación, eldispositivo siempre utiliza la ubicación nueva. Por ejemplo, si un usuario instala, elimina y después vuelve a instalar su aplicación,el dispositivo agrega su aplicación a la ubicación especificada anteriormente por el usuario.

Especificar una ubicación para una aplicación en un dispositivo BlackBerryPuede especificar una ubicación que agregar a su aplicación en un dispositivo BlackBerry agregando el atributo Content-Folder al archivo .jad para su aplicación. Si especifica una carpeta de aplicaciones y ésta no puede crearse, su aplicación seagrega a la carpeta predeterminada (por ejemplo, la carpeta Descargas).

Antes de comenzar: Compruebe que el dispositivo BlackBerry® está ejecutando BlackBerry® Device Software 5.0 o posterior.

1. En Eclipse®, abra y compile su proyecto de aplicación del dispositivo BlackBerry.

2. En la vista Explorador de paquetes, abra el archivo .jad de la carpeta <carpeta_proyecto>/deliverables/Standard/<x.x.x> . Si no ve la carpeta ni el archivo .jad, compruebe si ha compilado su proyecto.

3. En un editor de texto, agregue una línea nueva al final del archivo .jad y escriba lo siguiente:• Para agregar su aplicación a la pantalla de inicio de un dispositivo, escriba Content-Folder: /.

Guía de desarrollo Especificar una ubicación para su aplicación en un dispositivo BlackBerry

61

Page 64: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

• Para agregar su aplicación a una carpeta de aplicaciones, escriba Content-Folder: <nombre_carpeta>.• Para especificar ubicaciones para los distintos puntos de entrada, para cada punto de entrada, escriba Content-Folder-

x: <nombre_carpeta>. Por ejemplo, escriba Content-Folder-1: Games para el primer punto de entrada yContent-Folder-2: Applications para el segundo punto de entrada.

4. Guarde el archivo .jad.

5. En Eclipse, en la vista Explorador de paquetes, arrastre el archivo .jad de la carpeta <carpeta_proyecto>/deliverables/Standard/<x.x.x> a la carpeta raíz de su proyecto de aplicación.

6. Compile su proyecto.

7. Pruebe y distribuya su aplicación mediante los nuevos archivos del paquete.

Ejemplo: agregar una aplicación a la carpeta Juegos cambiando el archivo .jadManifest-Version: 1.0MIDlet-Version: 1.0.0MIDlet-Jar-Size: 2912MicroEdition-Configuration: CLDC-1.1MIDlet-Jar-URL: MyGame.jarRIM-COD-Module-Dependencies: net_rim_cldcRIM-MIDlet-Flags-1: 0RIM-COD-Module-Name: MyGameMIDlet-Name: MyGameRIM-COD-Size: 1504RIM-COD-Creation-Time: 1272372497MIDlet-1: My Game,img/mygame.png,RIM-COD-URL: MyGame.codRIM-COD-SHA1: 82 2f 22 b6 e6 34 ef c3 2b 0e a4 96 22 08 c0 60 39 4d db aaMicroEdition-Profile: MIDP-2.0MIDlet-Vendor: Research In Motion Ltd.Content-Folder: Games

Guía de desarrollo Especificar una ubicación para su aplicación en un dispositivo BlackBerry

62

Page 65: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Localizar aplicaciones del dispositivo BlackBerry 7

Compatibilidad de varios idiomasBlackBerry® Integrated Development Environment incluye un mecanismo de recursos para crear recursos de cadena. La API delocalización forma parte del paquete net.rim.device.api.i18n. Las aplicaciones MIDP no son compatibles con lalocalización.

BlackBerry Integrated Development Environment almacena los recursos de una configuración regional en un objetoResourceBundle. Un objeto ResourceBundleFamily contiene una recopilación de ResourceBundles, que agrupalos recursos de una aplicación. La aplicación puede cambiar los idiomas, dependiendo de la configuración regional del usuariodel dispositivo BlackBerry, sin requerir nuevos paquetes de recursos.

Puede utilizar BlackBerry Integrated Development Environment para compilar cada paquete de recursos en un archivo .codcompilado independientemente. Puede cargar los archivos .cod apropiados en los dispositivos BlackBerry con los otrosarchivos .cod de la aplicación.

Los recursos se organizan según una jerarquía basada en la capacidad heredable. Si una cadena no está definida en unaconfiguración regional, se utiliza una cadena de la configuración regional siguiente más cercana.

Archivos necesarios para la localización

Archivo necesario

para la localizaciónDescripción Ejemplo

Archivo de

encabezado de

recursos

Este archivo define claves descriptivas para cada cadena localizada.

Cuando BlackBerry® Integrated Development Environment compila un

proyecto, crea una interfaz de recursos con Resource agregado al

nombre del archivo .rrh. Por ejemplo, si crea AppName.rrh, la interfaz

se denominará AppNameResource.

AppName.rrh

Archivo de contenido

de recursos

(configuración

regional raíz)

Este archivo asigna claves de recursos a los valores de cadena de la

configuración regional (global) raíz. Tiene el mismo nombre que el

archivo de encabezado de recursos.

AppName.rrc

Guía de desarrollo Localizar aplicaciones del dispositivo BlackBerry

63

Page 66: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Archivo necesario

para la localizaciónDescripción Ejemplo

Archivo de contenido

de recursos

(configuraciones

regionales específicas)

Este archivo asigna claves de recursos a los valores de cadena de las

configuraciones regionales específicas (idioma y país). Los archivos

tienen el mismo nombre que el archivo de encabezado de recursos,

seguido por un carácter de subrayado (_) y el código de idioma y, a

continuación, opcionalmente, un carácter de subrayado (_) y el código

de país.

Guarde archivos de contenido de recursos en la carpeta donde se

encuentra el archivo .jad. Por ejemplo, en la carpeta que contiene

CountryInfo.java, guarde CountryInfo.rrc (configuración regional raíz),

CountryInfo_en.rrc (inglés) y CountryInfo_fr.rrc (francés).

AppName_en.rrc

AppName_en_GB.rrc

AppName_fr.rrc

Archivo de

inicialización

Este archivo inicializa el mecanismo del paquete de recursos. Este

archivo sólo es necesario cuando se compilan los recursos como

proyecto separado.

init.java

Administrar archivos de localización para un conjunto de aplicaciones deldispositivo BlackBerrySi crea un conjunto de aplicaciones del dispositivo BlackBerry®, deberá organizar los recursos en proyectos independientes paracada configuración regional. BlackBerry® Integrated Development Environment proporciona un mecanismo de inicializaciónintegrado. Sólo es necesario que cree una clase de inicialización vacía con un objeto main(). Si su configuración es compatiblecon un amplio número de configuraciones regionales, cree un único proyecto de biblioteca para todos los archivos de encabezadosde recursos (.rrh) y configure el tipo de proyecto en Library. Para cada configuración regional de recursos en la biblioteca, definauna dependencia entre los proyectos.

1. Abra BlackBerry® Integrated Development Environment.

2. Cree un proyecto para cada paquete de recursos (configuración regional), incluyendo la configuración regional raíz.

3. Dé a los proyectos de cada configuración regional de recursos el mismo nombre que al proyecto de la configuración regionalraíz, seguido de un carácter de subrayado doble (__), el código del idioma y, opcionalmente, un carácter de subrayado (_)seguido del código del país. Por ejemplo, si el proyecto de la configuración regional raíz de denominacom_company_app, los proyectos de cada configuración local se denominarán com_company_app__en,com_company_app__en_GB y com_company_app__fr.

4. Haga clic con el botón derecho y seleccione Propiedades.

5. En la ficha Compilar, en el campo Nombre del archivo de salida, escriba un nombre para el archivo compilado, sin unaextensión de nombre de archivo.

Guía de desarrollo Administrar archivos de localización para un conjunto de aplicaciones del dispositivo BlackBerry

64

Page 67: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

6. Cree un archivo de inicialización.

package com.rim.samples.device.resource;import net.rim.device.api.i18n.*;public class init {public static void main (String[] args) { }}

7. Cree un archivo de encabezado de recursos para cada aplicación del dispositivo BlackBerry.

8. Copie los archivos de encabezado de recursos (.rrh) en el proyecto para cada aplicación del dispositivo BlackBerry.

9. Copie los archivos de encabezado de recursos en cada proyecto de la configuración regional de recursos.

10. Cree un archivo de contenido de recursos para cada aplicación del dispositivo BlackBerry.

11. Cree un archivo de contenido de recursos para cada configuración regional compatible.

12. En cada proyecto de configuración regional de recursos, haga clic con el botón derecho en cada archivo .rrh y, a continuación,haga clic en Propiedades.

13. Seleccione Sólo dependencia. No compilar.

14. Agregue los archivos de contenido de recursos (.rrc) a los archivos de las configuraciones regionales adecuadas.

Guía de desarrollo Administrar archivos de localización para un conjunto de aplicaciones del dispositivo BlackBerry

65

Page 68: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Autenticación personalizada del usuario 8

Para iniciar sesión en un dispositivo BlackBerry, el usuario debe generar un identificador de seguridad. De forma predeterminada,los usuarios del dispositivo BlackBerry escriben una contraseña para autenticar su identidad y para generar el correspondienteidentificador de seguridad. Los dispositivos BlackBerry® que ejecutan BlackBerry® Device Software 5.0 o posterior también soncompatibles con los módulos de autenticación personalizada del usuario.

Debe crear un módulo de autenticación del usuario para utilizar hardware adicional, como una tarjeta inteligente o dispositivobiométrico, con el fin de realizar la autenticación. El marco de seguridad en el dispositivo BlackBerry utiliza su módulo deautenticación de usuario para interactuar con el hardware.

Para obtener más información acerca de la autenticación personalizada del usuario y de la clasenet.rim.device.api.userauthenticator, consulte la referencia de API de BlackBerry® Java® DevelopmentEnvironment.

Guía de desarrollo Autenticación personalizada del usuario

66

Page 69: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Glosario 9

3GPPThird Generation Partnership Project (Proyecto de asociación de tercera generación)

AESAdvanced Encryption Standard (Estándar de cifrado avanzado)

APIApplication Programming Interface (Interfaz de programación de aplicaciones)

APNaccess point name (nombre de punto de acceso)

ASCIIAmerican National Standards Institute (Instituto nacional estadounidense de normalización)

Archivo .alxUn archivo .alx es el descriptor de aplicación que ofrece información sobre una aplicación BlackBerry Java® Application y laubicación de los archivos .cod de la aplicación a un dispositivo BlackBerry.

BlackBerry MDSBlackBerry® Mobile Data System

CDMACode Division Multiple Access (Acceso múltiple por división de códigos)

Puerto COMpuerto de comunicaciones

EDGEEnhanced Data Rates for Global Evolution (Velocidad de datos mejorada para una evolución global)

EVDOEvolution Data Optimized (Datos de evolución optimizada)

GANgeneric access network (red de acceso genérico)

GERANRed de acceso radio para GSM-EDGE

GPRS

Guía de desarrollo Glosario

67

Page 70: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

General Packet Radio Service

GSMGlobal System for Mobile communications®

HTTPHypertext Transfer Protocol

HTTPSHypertext Transfer Protocol over Secure Sockets Layer (Protocolo de transferencia de hipertexto a través de un nivel desocket seguro)

IPPPInternet Protocol Proxy Protocol (Protocolo proxy de protocolo de Internet)

JSRJava® Specification Request

MIDPMobile Information Device Profile (Perfil de dispositivo móvil de información)

PAPPush Access Protocol (Protocolo de acceso push)

PINnúmero de identificación personal

RAPCRIM Application Program Compiler (Compilador de programas de aplicaciones de RIM)

libros de serviciosLos libros de servicios permiten determinar qué servicios estarán disponibles en los dispositivos BlackBerry o habilitadospara BlackBerry.

SSIDservice set identifier (identificador de servicios)

TCPTransmission Control Protocol

TLSTransport Layer Security (Seguridad de capa de transporte)

Triple DESTriple Data Encryption Standard (Estándar de cifrado triple de datos)

Guía de desarrollo Glosario

68

Page 71: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

UDPUser Datagram Protocol

UMTSSistema Universal de Telecomunicaciones Móviles

UTRANRed de acceso radio terrestre para UMTS

WAPWireless Application Protocol (Protocolo de aplicaciones inalámbricas)

WLANwireless local area network

Guía de desarrollo Glosario

69

Page 72: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Comentarios 10

Para ofrecer comentarios acerca de este documento, visite www.blackberry.com/docsfeedback.

Guía de desarrollo Comentarios

70

Page 73: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Recursos relacionados 11

Para obtener más información acerca del desarrollo de aplicaciones para dispositivos BlackBerry®, consulte los recursossiguientes.

• Guía de conceptos básicos de BlackBerry Java Application• Guía de desarrollo de interfaz de usuario y navegación de BlackBerry Java Application• Guía de desarrollo de integración de BlackBerry Java Application• Guía de desarrollo multimedia de BlackBerry Java Application• Guía de desarrollo de accesibilidad de BlackBerry Java Application• Nota técnica de desarrollo Transición a la pantalla táctil de BlackBerry Java Application• Guía de desarrollo de BlackBerry Browser• Zona para desarrolladores de BlackBerry en www.blackberry.com/developers• Referencia API para BlackBerry® Java® Development Environment

Guía de desarrollo Recursos relacionados

71

Page 74: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Historial de revisión del documento 12

Fecha Descripción

27 de abril de 2010 Se cambió el tema Especificar una ubicación para una aplicación en un dispositivo

BlackBerry .

6 de abril de 2010 Se añadieron los temas siguientes:

• Autenticación personalizada del usuario

Se han actualizado los temas siguientes:

• Conexiones de red y tipos de transporte

• Sistemas y rutas de archivo

Se añadieron los siguientes ejemplos de código:

• Ejemplo de código: leer secciones de un archivo binario

8 de octubre de 2009 Se añadieron los temas siguientes:

• Especificar una ubicación para su aplicación en un dispositivo BlackBerry

• Especificar una ubicación para una aplicación en un dispositivo BlackBerry

20 de agosto de 2009 Temas y ejemplos de código agregados que muestran cómo utilizar las

características de la API de red. Se ha añadido información de referencia de sistemas

y rutas de archivo.

14 de agosto de 2009 Se ha cambiado el tema de requisitos del sistema.

Guía de desarrollo Historial de revisión del documento

72

Page 75: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Aviso legal 13

©2010 Research In Motion Limited. Todos los derechos reservados. BlackBerry®, RIM®, Research In Motion®, SureType®,SurePress™ y las marcas comerciales, nombres y logotipos relacionados son propiedad de Research In Motion Limited y estánregistrados y/o se utilizan en EE.UU. y en diferentes países del mundo.

802.11a, 802.11b y 802.11g son marcas comerciales del Institute of Electrical and Electronics Engineers, Inc. es una marca comercialde Bluetooth SIG. es una marca comercial de Bluetooth SIG. Eclipse es una marca comercial de Eclipse Foundation, Inc. GlobalSystem for Mobile communications es una marca comercial de GSM MOU Association. iDEN es una marca comercial de Motorola,Inc. Microsoft, ActiveX, Internet Explorer y Windows son marcas comerciales de Microsoft Corporation. Java is a trademark ofSun Microsystems, Inc. UMTS es una marca comercial del European Telecommunications Standard Institute. Wi-Fi es una marcacomercial de Wi-Fi Alliance.. Todas las demás marcas comerciales son propiedad de sus respectivos propietarios.

Esta documentación, incluida cualquier documentación que se incorpore mediante referencia como documento proporcionadoo disponible en www.blackberry.com/go/docs, se proporciona o se pone a disposición "TAL CUAL" y "SEGÚN SUDISPONIBILIDAD" sin ninguna condición, responsabilidad o garantía de ningún tipo por Research In Motion Limited y susempresas afiliadas ("RIM") y RIM no asume ninguna responsabilidad por los errores tipográficos, técnicos o cualquier otraimprecisión, error u omisión contenidos en esta documentación. Con el fin de proteger la información confidencial y propia deRIM, así como los secretos comerciales, la presente documentación describe algunos aspectos de la tecnología de RIM en líneasgenerales. RIM se reserva el derecho a modificar periódicamente la información que contiene esta documentación, si bien tampocose compromete en modo alguno a proporcionar cambios, actualizaciones, ampliaciones o cualquier otro tipo de información quese pueda agregar a esta documentación.

Esta documentación puede contener referencias a fuentes de información, hardware o software, productos o servicios, incluidoscomponentes y contenido como, por ejemplo, el contenido protegido por copyright y/o sitios Web de terceros (conjuntamente,los "Productos y servicios de terceros"). RIM no controla ni es responsable de ningún tipo de Productos y servicios de terceros,incluido, sin restricciones, el contenido, la exactitud, el cumplimiento de copyright, la compatibilidad, el rendimiento, la honradez,la legalidad, la decencia, los vínculos o cualquier otro aspecto de los Productos y servicios de terceros. La inclusión de unareferencia a los Productos y servicios de terceros en esta documentación no implica que RIM se haga responsable de dichosProductos y servicios de terceros o de dichos terceros en modo alguno.

EXCEPTO EN LA MEDIDA EN QUE LO PROHÍBA ESPECÍFICAMENTE LA LEY DE SU JURISDICCIÓN, QUEDAN EXCLUIDAS PORLA PRESENTE TODAS LAS CONDICIONES, APROBACIONES O GARANTÍAS DE CUALQUIER TIPO, EXPLÍCITAS O IMPLÍCITAS,INCLUIDA, SIN NINGÚN TIPO DE LIMITACIÓN, CUALQUIER CONDICIÓN, APROBACIÓN, GARANTÍA, DECLARACIÓN DEGARANTÍA DE DURABILIDAD, IDONEIDAD PARA UN FIN O USO DETERMINADO, COMERCIABILIDAD, CALIDAD COMERCIAL,ESTADO DE NO INFRACCIÓN, CALIDAD SATISFACTORIA O TITULARIDAD, O QUE SE DERIVE DE UNA LEY O COSTUMBREO UN CURSO DE LAS NEGOCIACIONES O USO DEL COMERCIO, O RELACIONADO CON LA DOCUMENTACIÓN O SU USOO RENDIMIENTO O NO RENDIMIENTO DE CUALQUIER SOFTWARE, HARDWARE, SERVICIO O CUALQUIER PRODUCTO OSERVICIO DE TERCEROS MENCIONADOS AQUÍ. TAMBIÉN PODRÍA TENER OTROS DERECHOS QUE VARÍAN SEGÚN ELESTADO O PROVINCIA. ES POSIBLE QUE ALGUNAS JURISDICCIONES NO PERMITAN LA EXCLUSIÓN O LA LIMITACIÓN DEGARANTÍAS IMPLÍCITAS Y CONDICIONES. EN LA MEDIDA EN QUE LO PERMITA LA LEY, CUALQUIER GARANTÍA IMPLÍCITAO CONDICIONES EN RELACIÓN CON LA DOCUMENTACIÓN NO SE PUEDEN EXCLUIR TAL Y COMO SE HA EXPUESTOANTERIORMENTE, PERO PUEDEN SER LIMITADAS, Y POR LA PRESENTE ESTÁN LIMITADAS A NOVENTA (90) DÍAS DESDEDE LA FECHA QUE ADQUIRIÓ LA DOCUMENTACIÓN O EL ELEMENTO QUE ES SUJETO DE LA RECLAMACIÓN.

Guía de desarrollo Aviso legal

73

Page 76: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

EN LA MEDIDA MÁXIMA EN QUE LO PERMITA LA LEY DE SU JURISDICCIÓN, EN NINGÚN CASO RIM ASUMIRÁRESPONSABILIDAD ALGUNA POR CUALQUIER TIPO DE DAÑOS RELACIONADOS CON ESTA DOCUMENTACIÓN O SU USO,O RENDIMIENTO O NO RENDIMIENTO DE CUALQUIER SOFTWARE, HARDWARE, SERVICIO O PRODUCTOS Y SERVICIOSDE TERCEROS AQUÍ MENCIONADOS INCLUIDOS SIN NINGÚN TIPO DE LIMITACIÓN CUALQUIERA DE LOS SIGUIENTESDAÑOS: DIRECTOS, RESULTANTES, EJEMPLARES, INCIDENTALES, INDIRECTOS, ESPECIALES, PUNITIVOS O AGRAVADOS,DAÑOS POR PÉRDIDA DE BENEFICIOS O INGRESOS, IMPOSIBILIDAD DE CONSEGUIR LOS AHORROS ESPERADOS,INTERRUPCIÓN DE LA ACTIVIDAD COMERCIAL, PÉRDIDA DE INFORMACIÓN COMERCIAL, PÉRDIDA DE LA OPORTUNIDADDE NEGOCIO O CORRUPCIÓN O PÉRDIDA DE DATOS, IMPOSIBILIDAD DE TRANSMITIR O RECIBIR CUALQUIER DATO,PROBLEMAS ASOCIADOS CON CUALQUIER APLICACIÓN QUE SE UTILICE JUNTO CON PRODUCTOS Y SERVICIOS DE RIM,COSTES DEBIDOS AL TIEMPO DE INACTIVIDAD, PÉRDIDA DE USO DE LOS PRODUCTOS Y SERVICIOS DE RIM O PARTE DEÉL O DE CUALQUIER SERVICIO DE USO, COSTE DE SERVICIOS SUSTITUTIVOS, COSTES DE COBERTURA, INSTALACIONESO SERVICIOS, COSTE DEL CAPITAL O CUALQUIER OTRA PÉRDIDA MONETARIA SIMILAR, TANTO SI DICHOS DAÑOS SE HANPREVISTO O NO, Y AUNQUE SE HAYA AVISADO A RIM DE LA POSIBILIDAD DE DICHOS DAÑOS.

EN LA MEDIDA MÁXIMA EN QUE LO PERMITA LA LEY DE SU JURISDICCIÓN, RIM NO TENDRÁ NINGÚN OTRO TIPO DEOBLIGACIÓN O RESPONSABILIDAD CONTRACTUAL, EXTRACONTRACTUAL O CUALQUIER OTRA, INCLUIDA CUALQUIERRESPONSABILIDAD POR NEGLIGENCIA O RESPONSABILIDAD ESTRICTA.

LAS LIMITACIONES, EXCLUSIONES Y DESCARGOS DE RESPONSABILIDAD SE APLICARÁN: (A) INDEPENDIENTEMENTE DELA NATURALEZA DE LA CAUSA DE LA ACCIÓN, DEMANDA O ACCIÓN SUYA, INCLUIDA PERO NO LIMITADA ALINCUMPLIMIENTO DEL CONTRATO, NEGLIGENCIA, AGRAVIO, EXTRACONTRACTUAL, RESPONSABILIDAD ESTRICTA OCUALQUIER OTRA TEORÍA DEL DERECHO Y DEBERÁN SOBREVIVIR A UNO O MÁS INCUMPLIMIENTOS ESENCIALES O ALINCUMPLIMIENTO DEL PROPÓSITO ESENCIAL DE ESTE CONTRATO O CUALQUIER SOLUCIÓN CONTENIDA AQUÍ; Y (B) ARIM Y A SUS EMPRESAS AFILIADAS, SUS SUCESORES, CESIONARIOS, AGENTES, PROVEEDORES (INCLUIDOS LOSPROVEEDORES DE SERVICIOS DE USO), DISTRIBUIDORES AUTORIZADOS POR RIM (INCLUIDOS TAMBIÉN LOSPROVEEDORES DE SERVICIOS DE USO) Y SUS RESPECTIVOS DIRECTORES, EMPLEADOS Y CONTRATISTASINDEPENDIENTES.

ADEMÁS DE LAS LIMITACIONES Y EXCLUSIONES MENCIONADAS ANTERIORMENTE, EN NINGÚN CASO NINGÚNDIRECTOR, EMPLEADO, AGENTE, DISTRIBUIDOR, PROVEEDOR, CONTRATISTA INDEPENDIENTE DE RIM O CUALQUIERAFILIADO DE RIM ASUMIRÁ NINGUNA RESPONSABILIDAD DERIVADA DE O RELACIONADA CON LA DOCUMENTACIÓN.

Antes de instalar, usar o suscribirse a cualquiera de los Productos y servicios de terceros, es su responsabilidad asegurarse deque su proveedor de servicios de uso ofrezca compatibilidad con todas sus funciones. Puede que algunos proveedores de serviciosde uso no ofrezcan las funciones de exploración de Internet con una suscripción al servicio BlackBerry® Internet Service. Consultecon su proveedor de servicios acerca de la disponibilidad, arreglos de itinerancia, planes de servicio y funciones. La instalacióno el uso de los Productos y servicios de terceros con productos y servicios de RIM puede precisar la obtención de una o máspatentes, marcas comerciales, derechos de autor u otras licencias para evitar que se vulneren o violen derechos de terceros.Usted es el único responsable de determinar si desea utilizar Productos y servicios de terceros y si se necesita para ello cualquierotra licencia de terceros. En caso de necesitarlas, usted es el único responsable de su adquisición. No instale o utilice Productosy servicios de terceros hasta que se hayan adquirido todas las licencias necesarias. Cualquier tipo de Productos y servicios deterceros que se proporcione con los productos y servicios de RIM se le facilita para su comodidad "TAL CUAL" sin ningunacondición expresa e implícita, aprobación, garantía de cualquier tipo por RIM y RIM no sume ninguna responsabilidad en relacióncon ello. El uso de los Productos y servicios de terceros se regirá y estará sujeto a la aceptación de los términos de licenciasindependientes aplicables en este caso con terceros, excepto en los casos cubiertos expresamente por una licencia u otro acuerdocon RIM.

Guía de desarrollo Aviso legal

74

Page 77: BlackBerry_Java_Application--790641-0622091431-005-5.0-ES

Algunas funciones mencionadas en esta documentación requieren una versión mínima del software de BlackBerry® EnterpriseServer, BlackBerry® Desktop Software y/o BlackBerry® Device Software.

Los términos de uso de cualquier producto o servicio de RIM se presentan en una licencia independiente o en otro acuerdo conRIM que se aplica en este caso. NINGUNA PARTE DE LA PRESENTE DOCUMENTACIÓN ESTÁ PENSADA PARA PREVALECERSOBRE CUALQUIER ACUERDO EXPRESO POR ESCRITO O GARANTÍA PROPORCIONADA POR RIM PARA PARTES DECUALQUIER PRODUCTO O SERVICIO DE RIM QUE NO SEA ESTA DOCUMENTACIÓN.

Research In Motion Limited295 Phillip StreetWaterloo, ON N2L 3W8Canadá

Research In Motion UK Limited Centrum House 36 Station Road Egham, Surrey TW20 9LF Reino Unido

Publicado en Canadá

Guía de desarrollo Aviso legal

75