RecordStore.listRecordStores() sempre dá null

Olá! :smiley:

Estou tentando criar uma comunicação entre várias aplicações j2me em um mesmo aparelho. Elas gravam informações diversas em RMS, exceto uma, que apenas verifica quais RMS se encontram no aparelho:

[code]import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.RecordStore;

public class ListaRecords extends MIDlet {

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

}

protected void pauseApp() {

}

protected void startApp() throws MIDletStateChangeException {
	Display display = Display.getDisplay(this);
	Form form = new Form("RMS");
	int k = 0;
	try {
		String[] records = RecordStore.listRecordStores();
		k = 1;
		for (int i = 0; i < records.length; i++) {
			k = 2;
			form.append(records[i]);
			k = 3;
			form.append("\n");

		}
		k = 4;
		display.setCurrent(form);
	} catch (Exception e) {
		Alert alert = new Alert("Não há records a serem mostrados!",
				"Encontrado " + e.toString() + " em " + k, null,
				AlertType.ALARM);
		display.setCurrent(alert);
	}

}

}
[/code]

Funciona muito bem no Wireless Toolkit 2.5.2, mas não no meu celular (UPDATE:um nokia 5310) ou no meu palm (um z22). Sempre obtenho o erro relatado na exceção assim:
“Não há records a serem mostrados!”,"Encontrado NullPointerException em 1"
Sendo assim, é óbvio que o listRecordStores tá sempre retornando null, apesar das aplicações possuírem dados gravados! (posso garantir isso, afinal, cada aplicação consegue recuperar infos passadas acessando seus respectivos rms).

Minha dúvida é se alguém já passou por esse problema e conseguiu resolver, ou se existe um outro procedimento a ser feito para esse caso. Obrigado!

Pow… onde que você está abrindo o RecordStore? (openRecordStore)

não é necessário abri-lo, já que o método é estático e independe de um objeto RecordStore

Nunca tinha visto assim…

Tipo, c ta dentro do seu eclipse?
Pq se sim.
Geralmente o eclipse da pau nos RecordStore e cria um novo appDb toda vez, ai vc grava numa vez, fecha o simulador e qndo volta parece qi vc gravou nada no RMS.

[quote=kcouto]
Funciona muito bem no Wireless Toolkit 2.5.2, mas não no meu celular (um nokia 5120) ou no meu palm (um z22). [/quote]

Não, não estou no eclipse. Como eu disse, no wtk dá certo, não dá certo nos devices

Nokia 5120? Nao achei isso no forum nokia.
E no Z22 qual VM vc esta usando J9?

desculpe, errei o modelo. É 5310. Já procurei no fórum da nokia mas nada.
No palm, sim, estou usando j9.

Aff, qndo a gente le o post com pressa nao ajuda direito.

Simples kra, nao há comunicacao de RMS de um Midlet para outro. Pode ler em qualquer lugar. Ate pq os arquivos, para evitar conflitos do RMS, sao criados assim [nomeMidlet].[nomeRecordStore]. Logo se vc gravar em um Midlet nao ira abrir no outro.

hmmmmm, entendi… era isso que eu queria, pelo uma confirmação de que não era possível.

:smiley:

Eu praticamente li so o titulo do post e nao prestei atencao no resto…
Mas nao tem jeito mesmo.
Tem uma JSR que preve isso, nao lembro qual mais

Ah
Uma sugestao eh, usar file system.
Grava um arquivo Txt que vc consegue comunicar entre varios midlets
Agora no Z22 nao funfa isso, vc nao tem acesso a memoria.