Pregunta

Estoy escribiendo un MIDlet que necesita para escribir en el archivo.Estoy usando FileConnection de JSR-75 para lograr esto.

La intención es contar con este MIDlet parado en tanto dispositivos como sea posible (todos los dispositivos MIDP 2.0 con JSR-75 apoyo, idealmente).

En varios emuladores y un HTC Touch Pro2, que puede perfectamente utilizar el código siguiente para llegar a la raíz del sistema de ficheros:

Enumeration drives = FileSystemRegistry.listRoots();
String root = (String) drives.nextElement();
String path = "file:///" + root;

Sin embargo, en un Nokia S60 5th edition emulador, tratando de abrir una FileConnection a esta ruta lanza un java.lang.SecurityException.Al parecer S60 dispositivos no permiten conexiones a la raíz del sistema de ficheros.Me doy cuenta de que puedo usar algo como Sistema.getProperty("fileconn.dir.fotos"), pero que no es compatible en todos los dispositivos.

Por lo tanto, mi real pregunta:¿cuál es el mejor método para conseguir un camino para crear un FileConnection, que permite la máxima portabilidad?

Gracias.

Editar:Supongo que me podría iterar sobre todas las raíces en la Enumeración, y comprobar una escritura de uno, pero eso no es óptima, por dos razones.En primer lugar, no hay necesariamente ninguna escritura raíces.En segundo lugar, esta podría ser la memoria del teléfono o en una tarjeta de memoria, por lo que el método de almacenamiento no ser consistentes a través de los dispositivos, que es bastante feo.

¿Fue útil?

Solución

Se supone que para abrir conexiones de sólo lectura a las raíces con el fin de averiguar qué carpetas que contienen.

Como regla general, cuando se abre una conexión a una carpeta lectura_escritura lanza una SecurityException, intentará abrir una conexión de sólo lectura para navegar a través de las subcarpetas con el fin de encontrar uno puede escribir.

En concreto en Symbian (y otras plataformas avanzado lo suficiente como para proporcionar jaulas de datos seguros a sus MIDlet), puede utilizar System.getProperty("fileconn.dir.private"); para encontrar un área de escritura.

Otros consejos

Te diré lo que hacemos. Tenemos una aplicación de prueba que solo se entera de la raíz del sistema de archivos y la raíz de la tarjeta SD, si procede. Hemos establecido esto como un parámetro JAD. El código lee desde el archivo JAD. Dado que usted no necesita volver a compilar el frasco para diferentes dispositivos de esto funciona muy bien, basta con cambiar el parámetro JAD para un teléfono con diferente raíz del sistema de archivos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top