Problemas com JSR75 na leitura de arquivos txt

2 respostas
K

Oi, sou novo no forum e ainda estou iniciando com o j2me. Bom estou tentando fazer um programa que lê arquivos txt na memoria do celular (interna ou cartão) e faz persistencia com os dados, entretanto eu tive um problema, testando no meu celular um nokia2660 (não posssui cartão) ele rodou sem problemas utilizando a pasta de imagens do celular para armazenar os arquivos txt, porem, quando testei ele em outro celular (mais recente) e em um smartphone da nokia eles não rodaram.

No da samsung quando foi ler o primeiro arquivo o programa congelou e no da nokia ele simplesmente não leu, eu baixei o kit de desenvolvedor da samsung e nele o programa rodou sem problemas... exceto uma vez que rodei simulando o celular de outra forma, no momento não lembro como fiz, mas deu um security exception.

Se alguem puder me ajudar eu agradeço, irei postar apenas uma parte do codigo que é a que faz a leitura dos dados. Só um obs. pode ser que eu tenha postado um codigo com outros erros, é que não estou no meu pc mas assim que eu puder irei verificar se é a versão que roda sem problemas no meu celular.

public static String[] LerArquivo(String nomeArquivo) {
        String[] retorno = null;
        StringBuffer full = new StringBuffer();
        System.out.println("Ler There?");
        String[] s = listarRoots();
        String galleryPath = System.getProperty("fileconn.dir.photos");
        System.out.println("root1?: " + s[0]);
        for (int j = -1; j < s.length; j++) {
            try {
                System.out.println("s: " + s.length);
                FileConnection fc;
                if (j == -1) {
                    fc = (FileConnection) Connector.open(galleryPath + nomeArquivo);
                    System.out.println(galleryPath + nomeArquivo);
                } else {
                    fc = (FileConnection) Connector.open("file:///" + s[j] + nomeArquivo);
                    System.out.println("file:///" + s[j] + nomeArquivo);
                }
                if (!fc.exists()) {
                    continue;
                }

                InputStream is = fc.openInputStream();

                int chr, i = 0;
                while ((chr = is.read()) != -1) {
                    full.append((char) chr);
                }

                retorno = split(full.toString());
                fc.close();
                return retorno;

            } catch (Exception e) {
                if(j == s.length-1) {
                    e.printStackTrace();
                    retorno[0] = ("erro: " + e.getMessage());
                    return retorno;
                }
            }
        }
        return retorno;

    }

2 Respostas

doug

Olá

Precisa verificar algumas condições para utilizar esse JSR.

  • Se o dispositivo tem a JSR implementada.
  • Se não há restrição de uso no dispositivo, coisa para acessar precisa ser assinado a aplicação.

Editado:
Quando desenvolvi para o BlackBerry, ele tem uma especie de firewall interno que impede algumas funcionalidades, dai precisa liberar para rodas perfeito.

Espero ter ajudado.
Flwss

K
Não posto o código todo pois eu estou apenas dando continuação a uma aplicação já existente aqui na faculdade e ela foi implementada utilizando o netbeans e ele agrupa todos os arquivos que deveriam estar no pacote view em um só e no momento não tenho tempo para reescreve-lo. Bom antes dessa parte eu verifico se ele tem a JSR, como estou em casa rodei denovo no SDK da samsung e o erro é esse:
TRACE:  , Exception caught in Display class 
java.lang.SecurityException: MIDlet not constructed by createMIDlet. 
- com.sun.midp.midlet.MIDletStateHandler.newMIDletPeer(), bci=24 
- javax.microedition.midlet.MIDlet. (), bci=9 
- view.Veterinaria. (), bci=1 
- util.ManipularArquivos.LerArquivo(), bci=4 
- view.Veterinaria.commandAction(), bci=1592 
- org.netbeans.microedition.lcdui.WaitScreen.doAction(), bci=33 
- org.netbeans.microedition.lcdui.WaitScreen.access$000(), bci=1 
- org.netbeans.microedition.lcdui.WaitScreen$BackgroundExecutor$1.run(), bci=19 
- javax.microedition.lcdui.Display.getCallSerially(), bci=69 
- javax.microedition.lcdui.Display.access$1200(), bci=1 
- javax.microedition.lcdui.Display$DisplayEventConsumerImpl.handleCallSeriallyEvent(), bci=4 
- com.sun.midp.lcdui.LCDUIEventListener.process(), bci=104 
- com.sun.midp.events.EventQueue.run(), bci=179 
- java.lang.Thread.run(), bci=11

Esqueça o erro acima, foi em uma versão que tentei modificar as telas de alerta que apareciam enquanto o aplicativo lia os arquivos txt e fazia a persistência.

Criado 27 de outubro de 2010
Ultima resposta 27 de out. de 2010
Respostas 2
Participantes 2