Domanda

Sto scrivendo una MIDlet che ha bisogno di scrivere il file. Sto utilizzando FileConnection dalla JSR-75 per raggiungere questo obiettivo.

L'intenzione è quella di avere questo MIDlet runnning su quanto più dispositivi possibile (tutti i dispositivi MIDP 2.0 con JSR-75 supporto, idealmente).

In diverse emulatori e un HTC Touch Pro2, posso perfettamente utilizzare il seguente codice per ottenere il root del filesystem:

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

Tuttavia, su un Nokia S60 5th edition emulatore, cercando di aprire un FileConnection a questo percorso getta una java.lang.SecurityException. A quanto pare i dispositivi S60 non consentono un collegamento con la radice del filesystem. Mi rendo conto che posso usare qualcosa di simile System.getProperty ( "fileconn.dir.photos"), ma che non è supportato su tutti i dispositivi sia.

Quindi, la mia attuale questione : qual è l'approccio migliore per ottenere un percorso per creare un FileConnection con, che permette per la massima portabilità

?

Grazie.

Modifica : Suppongo che potrei iterare su tutte le radici nella enumerazione, e verificare la presenza di uno scrivibile, ma non è certo ottimale per due motivi. In primo luogo, non ci sono necessariamente eventuali radici scrivibili. In secondo luogo, questo potrebbe essere la memoria del telefono o su una scheda di memoria, in modo che il metodo di archiviazione non sarebbe coerente in tutti i dispositivi, il che è piuttosto brutto.

È stato utile?

Soluzione

Si suppone di aprire connessioni sola lettura per le radici al fine di scoprire che cosa la cartella che contengono.

Come regola generale, quando si apre un collegamento a una cartella READ_WRITE lancia una SecurityException, provare ad aprire una connessione di sola lettura per sfogliare le sottocartelle al fine di trovare uno scrivibile.

In particolare su Symbian (e altre piattaforme abbastanza avanzata per fornire gabbie di dati sicuri per i vostri MIDlets), è possibile utilizzare System.getProperty("fileconn.dir.private"); per trovare una zona scrivibile.

Altri suggerimenti

Vi dirò quello che facciamo. Abbiamo un'applicazione di test che trova appena fuori la radice del file system e la radice della scheda SD, se applicabile. Abbiamo impostato questo come un parametro di Jad. Il codice legge dal file Jad. Dal momento che non avete bisogno di ricompilare il vaso per i diversi dispositivi di questo funziona molto bene, basta cambiare il parametro Jad di un portatile con diversi file system di root.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top