Caminho de arquivo para J2ME FileConnection?
Pergunta
Estou escrevendo um meio que precisa escrever um arquivo. Estou usando o FileConnection do JSR-75 para conseguir isso.
A intenção é fazer com que esse médiolet executasse o máximo de dispositivos possível (todos os dispositivos MIDP 2.0 com suporte JSR-75, idealmente).
Em vários emuladores e um HTC Touch Pro2, posso usar perfeitamente o código a seguir para obter a raiz do sistema de arquivos:
Enumeration drives = FileSystemRegistry.listRoots();
String root = (String) drives.nextElement();
String path = "file:///" + root;
No entanto, em um emulador de 5ª edição nokia s60, tentando abrir uma linha de filtro para esse caminho, lança um java.lang.securityException. Aparentemente, os dispositivos S60 não permitem conexões com a raiz do sistema de arquivos. Sei que posso usar algo como System.getProperty ("FileConn.dir.photos"), mas isso também não é suportado em todos os dispositivos.
Então, meu verdadeiro pergunta: Qual é a melhor abordagem para obter um caminho para criar uma conconagem de filas, que permite a máxima portabilidade?
Obrigado.
Editar: Suponho que poderia itera sobre todas as raízes na enumeração e verificar se há uma gravidade, mas isso não é ideal por dois motivos. Primeiro, não há necessariamente raízes graváveis. Segundo, essa pode ser a memória do telefone ou um cartão de memória, portanto o método de armazenamento não seria consistente entre os dispositivos, o que é bastante feio.
Solução
Você deve abrir conexões somente leitura com raízes para descobrir qual pasta eles contêm.
Como regra geral, ao abrir uma conexão read_write com uma pasta, lança uma SecurityException, tente abrir uma conexão somente leitura para navegar pelos subestudores para encontrar uma gravidade.
Especificamente em Symbian (e outras plataformas avançadas o suficiente para fornecer gaiolas de dados seguras para seus médios), você pode usar System.getProperty("fileconn.dir.private");
para encontrar uma área gravável.
Outras dicas
Eu vou te dizer o que fazemos. Temos um aplicativo de teste que apenas descobre a raiz do sistema de arquivos e a raiz do cartão SD, se aplicável. Definimos isso como um parâmetro JAD. O código o lê do arquivo jad. Como você não precisa recompilar o frasco para diferentes dispositivos, isso funciona muito bem, basta alterar o parâmetro JAD para um aparelho com o sistema de arquivos diferentes.