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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top