Question

J'écris un MIDlet qui doit écrire le fichier. J'utilise FileConnection de JSR-75 pour y parvenir.

L'intention est d'avoir cette MIDlet runnning sur les appareils autant que possible (tous les périphériques MIDP 2.0 avec prise en charge JSR-75, idéalement).

Sur plusieurs émulateurs et un HTC Touch Pro2, je peux parfaitement utiliser le code suivant pour obtenir la racine du système de fichiers:

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

Cependant, sur un émulateur 5ème édition Nokia S60, en essayant d'ouvrir un FileConnection à ce chemin jette un java.lang.SecurityException. Apparemment, les appareils S60 ne permettent pas les connexions à la racine du système de fichiers. Je me rends compte que je peux utiliser quelque chose comme System.getProperty ( « fileconn.dir.photos »), mais qui ne fait pas non plus sur tous les appareils.

Alors, ma réelle Question : quelle est la meilleure approche pour obtenir un chemin pour créer un FileConnection avec, qui permet une portabilité maximale

?

Merci.

Modifier : Je suppose que je pourrais itérer sur toutes les racines du Enumeration, et vérifier une écriture, mais c'est à peine optimale pour deux raisons. Tout d'abord, il n'y a pas nécessairement de racines inscriptibles. En second lieu, cela pourrait être la mémoire du téléphone ou sur une carte mémoire, la méthode de stockage ne serait pas conforme sur tous les appareils, ce qui est plutôt laid.

Était-ce utile?

La solution

Vous êtes censé ouvrir des connexions en lecture seule aux racines afin de trouver ce dossier qu'ils contiennent.

En règle générale, lors de l'ouverture d'une connexion read_write à un dossier jette un SecurityException, essayez d'ouvrir une connexion en lecture seule pour parcourir les sous-dossiers afin de trouver un inscriptible.

En particulier sur Symbian (et d'autres plates-formes assez avancés pour fournir des cages de données sécurisés à vos MIDlets), vous pouvez utiliser System.getProperty("fileconn.dir.private"); pour trouver une zone inscriptible.

Autres conseils

Je vais vous dire ce que nous faisons. Nous avons une application de test qui vient trouve la racine du système de fichiers et la racine de la carte SD le cas échéant. Nous avons mis cela comme un paramètre JAD. Le code lit à partir du fichier Jad. Puisque vous ne avez pas besoin de recompiler le pot pour les différents appareils, cela fonctionne très bien, il suffit de changer le paramètre jad pour un combiné avec différentes racine du système de fichiers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top